|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『楼 主』:
[已结]一道题
有过这样一道题,某位朋友从C题目中选出来的。。但当时讨论时这题没有给出答案。
今天忽然想起来,发上来一起做做。。。
n个人围成1圈,顺序排号,从1到3开始报数,报到3的人退出这个圈子,问最后留下的那个人是原来的几号?
[ Last edited by pusofalse on 2008-7-8 at 12:51 PM ]
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-7-8 10:57 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
2 楼』:
是n个人吗?没有具体的人数?
|
致精致简! |
|
2008-7-8 11:11 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
3 楼』:
n 是用户输入的数字
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-7-8 11:13 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
4 楼』:
仍不太明白题意
假设有 a b c d e f g h 8人
当数到3时,c 退出,然后该如何?又从1开始数起吗?若是,是从a开始数还是从d开始数?
|
致精致简! |
|
2008-7-8 11:19 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
5 楼』:
数到3,c退出,然后接着从d开始数1,那么轮到f数到3,f退出。g接着数1,h是2,然后接着返回a,a又退出。第二次循环时b是1,d又推出。如此循环,直到只剩一个人,问这个人是原来的几号。。。
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-7-8 11:24 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
6 楼』:
不知道对不对,初步测试是对的
:
@echo off&setlocal enabledelayedexpansion
set /a n=8
for /l %%a in (1 1 !n!) do set str=!str! a%%a
call :loop !str!
for %%a in (!str!) do set str=%%a
echo.&echo 最后剩下的是原来的 !str:~1! 号
pause>nul
:loop
set /a m=0,h=0
set "tmp="
for %%i in (%*) do (
set /a m+=1
if !m! equ 3 (
call set str=%%str:!tmp! %%i=%%!tmp!
for %%j in (!str!) do set /a h+=1
if !h! neq 2 call :loop !str!
)
set tmp=!tmp! %%i
)
goto :eof [ Last edited by 26933062 on 2008-7-8 at 12:25 PM ]
|
致精致简! |
|
2008-7-8 11:46 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
7 楼』:
有8个人时,留下的是原来的8号,而不是7号。
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-7-8 12:01 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
8 楼』:
怎么会呢?
我手工数 8 个人都是剩下 7 号啊?
1 2 3 4 5 6 7 8
1 2 4 5 6 7 8
1 2 4 5 7 8
2 4 5 7 8
2 4 7 8
4 7 8
4 7
7
|
致精致简! |
|
2008-7-8 12:21 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
9 楼』:
我写了一通,发现和前辈的竟然运行结果都一样。。。完全一样。。。
@echo off&setlocal enabledelayedexpansion
set/p n=输入人数:
:1
for /l %%a in (1 1 %n%) do set nn=!nn!%%a
:2
for %%a in (%nn%) do (
set/a mm+=1
set %%a=!mm!
if !mm! equ 3 set mm=0
)
for %%a in (%nn%) do if !%%a! neq 3 set m=!m!%%a
for %%a in (%m%) do set/a x+=1
set nn=%m%
if %x% neq 1 set x=0&set m=&goto 2
echo %m%
pause [ Last edited by pusofalse on 2008-7-8 at 12:52 PM ]
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-7-8 12:23 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
10 楼』:
看了 8 楼 的回帖了吗?
|
致精致简! |
|
2008-7-8 12:27 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
11 楼』:
SORRY
是我错了。。。
疏漏了一个。。。
[ Last edited by pusofalse on 2008-7-8 at 12:39 PM ]
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-7-8 12:35 |
|
|
radem
高级用户
CMD感染者
积分 691
发帖 383
注册 2008-5-23
状态 离线
|
『第
12 楼』:
1 2 3 4 5 6 7 8
1 2 4 5 7 8
2 4 7 8
4 7
7
|
|
|
2008-7-8 13:10 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
13 楼』:
著名的约瑟夫环问题
|
|
|
2008-7-8 14:06 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
14 楼』:
Quote: | Originally posted by 26933062 at 2008-7-8 11:46:
不知道对不对,初步测试是对的
@echo off&setlocal enabledelayedexpansion
set /a n=8
for /l %%a in (1 1 !n!) do set str=!str! a%%a
call :loop !str!
for %%a in (!str!) d ... |
|
虽结贴 还是有点疑问
刚试一下 发现数字大了不行
写一个也是超1856就不行
@echo off&setlocal enabledelayedexpansion
set/a n=1856
for /l %%i in (1 1 !n!) do set str=!str! %%i
call :lp "!str!"
echo 最后剩下的是原来的 !str! 号
pause&exit
:lp
set "str="
for %%i in (%~1) do (
set/a m+=1,t=m%%3
if !t! neq 0 set str=!str! %%i&set/a p+=1
)
if !p! gtr 1 set p=&call:lp "!str!" 下面的也是勉强处理稍大一点
@echo off&setlocal enabledelayedexpansion
set/a n=2673
for /l %%i in (1 1 !n!) do (
set/a m+=1,t=m%%3
if !t! neq 0 set str=!str! %%i
)
call :lp "!str!"
echo 最后剩下的是原来的 !str! 号
pause&exit
:lp
set "str="
for %%i in (%~1) do (
set/a m+=1,t=m%%3
if !t! neq 0 set str=!str! %%i&set/a p+=1
)
if !p! gtr 1 set p=&call:lp "!str!"
|
简单!简单!再简单! |
|
2008-7-8 22:08 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
15 楼』:
大数字不行的原因是 超出了变量的最大字符数。
看谁有心思挑战这个难关。。。
|
致精致简! |
|
2008-7-8 22:51 |
|