一、题目
Description:
有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
Input:
包含多组数据。
每行表示初始人数n。
最后一组是0,不用处理。
Output:
对每个测试数据输出最后一人的初始编号
Sample Input:
3 7 0
Sample Output:
2 4
二、代码
#include<stdio.h>
#include<string.h>
int main()
{
int n;
scanf("%d", &n);
while (n != 0)
{
int res = 0;
for (int i = 2; i <= n; i++)
{
res = (res + 3) % i;
}
printf("%d\n", res + 1);
scanf("%d", &n);
}
return 0;
}
该程序解决了一种数学问题,即多人围圈按1到3报数,报到3的人退出,最终留下的人的原始编号。代码使用循环和模运算找到最后剩余的编号。
11万+

被折叠的 条评论
为什么被折叠?



