解题思路:对于1组人N,报数为M,则每踢出1个人,下一个人,位置(f.N)就变成了报数的开始,即它之前的M位数相当于消失了,它的位置就变成了(f.N-M),即f.N=f.(N-1)+M。那么从人数为1个人开始,已知留下位置为0.那么2个人,留下位置就是(0+3),为解决数组超界限,取模,即(0+3)%2,即留下位置为1.以此类推。
参考代码:
n=int(input())
z=0
for i in range(2,n+1):
z=(z+3)%i
print(z+1)
0.0分
1 人评分
C语言训练-求素数问题 (C语言代码)浏览:989 |
C语言训练-阶乘和数* (C语言代码)浏览:1060 |
C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:1238 |
C语言程序设计教程(第三版)课后习题7.4 (C语言代码)浏览:643 |
剪刀石头布 (C语言代码)不知道怎么直接在scanf中用枚举变量浏览:1436 |
C语言训练-列出最简真分数序列* (C语言代码)浏览:658 |
WU-输出九九乘法表 (C++代码)浏览:1853 |
DNA (C语言描述,数据结构)浏览:909 |
【计算两点间的距离】 (C语言代码)浏览:1522 |
关于C语言变量位置的问题浏览:294 |