从1到x报数,凡报到x的人退出。
报到数的号我这里用0代替,然后继续从1开始报数,周而复始,计算所有号的和,当和为0时,那么最后一个被替代的号码就是要找的人了。当数字过大的时候运行的好慢,请高手改进。- @echo off&setlocal enabledelayedexpansion&color 0a
- title Number
- echo 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到x报数),凡报到x的人退出圈子,问最后留下的是原来第几号的那位。
- echo.
- set /p var=请输入人数:
- set /p var1=请输入报的数(x):
- echo.
- set t=%time%
- echo 十个人的序号为:
- for /l %%i in (1,1,%var%) do set /a a%%i=%%i&set /p=%%i <nul
- echo.
- set /a m=0
- :loop
- set /a sum=0,n+=1,x+=1
- if %x% gtr %var1% set /a x=1
- :a
- if %n% gtr %var% set /a n=1
- if !a%n%! equ 0 set /a n+=1&goto a
- if %x% equ %var1% (
- set s=!a%n%!
- set /a a%n%=0
- )
- for /l %%i in (1,1,%var%) do set /a sum+=!a%%i!
- if %sum% neq 0 goto loop
- echo.
- echo 最后留下的人的号码是:%s%号
- echo.
- echo 程序开始时间:%t%
- echo 程序结束时间:%time%
- pause>nul
复制代码
|