有n个人围成一圈(编号为1~n),从第1号开始进行1、2、3报数,凡报3者就退出,下一个人又从1开始报数……直到最后只剩下一个人时为止。请问此人原来的位置是多少号?
输入格式:
测试数据有多组,处理到文件尾。每组测试输入一个整数n(5≤n≤100)。
输出格式:
对于每组测试,输出最后剩下那个人的编号。
输入样例:
10
28
69
输出样例:
4
23
68
代码实现:
#include<bits/stdc++.h>
using namespace std;
int main(){
int x;
while(scanf("%d",&x)!=EOF){
if(x==0){
break;
}
int sum=0;
for(int i=2;i<x+1;i++){
sum=(sum+3)%i;
}
printf("%d\n",sum+1);
}
return 0;
}

1832

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



