[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
从1到x报数,凡报到x的人退出。
报到数的号我这里用0代替,然后继续从1开始报数,周而复始,计算所有号的和,当和为0时,那么最后一个被替代的号码就是要找的人了。当数字过大的时候运行的好慢,请高手改进。
  1. @echo off&setlocal enabledelayedexpansion&color 0a
  2. title Number
  3. echo 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到x报数),凡报到x的人退出圈子,问最后留下的是原来第几号的那位。
  4. echo.
  5. set /p var=请输入人数:
  6. set /p var1=请输入报的数(x):
  7. echo.
  8. set t=%time%
  9. echo 十个人的序号为:
  10. for /l %%i in (1,1,%var%) do set /a a%%i=%%i&set /p=%%i <nul
  11. echo.
  12. set /a m=0
  13. :loop
  14. set /a sum=0,n+=1,x+=1
  15. if %x% gtr %var1% set /a x=1
  16. :a
  17. if %n% gtr %var% set /a n=1
  18. if !a%n%! equ 0 set /a n+=1&goto a
  19. if %x% equ %var1% (
  20.    set s=!a%n%!
  21.    set /a a%n%=0
  22. )
  23. for /l %%i in (1,1,%var%) do set /a sum+=!a%%i!
  24. if %sum% neq 0 goto loop
  25. echo.
  26. echo 最后留下的人的号码是:%s%号
  27. echo.
  28. echo 程序开始时间:%t%
  29. echo 程序结束时间:%time%
  30. pause>nul
复制代码
http://www.maxccie.cn

TOP

返回列表