有N个人围成一圈(编号为1~N),从第1号开始进行1、2、3报数,凡报3者就退出,下一个人又从1开始报数……直到最后只剩下一个人时为止。请问此人原来的编号是多少?
输入格式:
在一行中给出1个不超过100的正整数N。
输出格式:
在一行中输出最后剩下那个人的编号。
输入样例:
10
输出样例:
4
#include <stdio.h>
int main(){
int n;
scanf("%d",&n);
int i,arr[n],result = 0,count = 0;
memset(arr,1,sizeof(arr));
int index,j;
for(i = 0;i < n/2;i++){
for(j = 0;j < n;j++){
if(arr[j] != 0){
count++;
result++;
}
if(count == 3){
arr[j] = 0;
count = 0;
}
}
if(result == 1) break;
else result = 0;
}
for(i = 0;i < n;i++){
if(arr[i] > 0){
printf("%d",i+1);
}
}
}