第一种是速度快的方法;
int main(){
int n;
while(cin>>n,n!=0){
int i,k=0;
for(i=1;i<=n;i++){
k=(k+3)%i;
}
cout<<k+1<<endl;
}
return 0;
}
第二种算法用数组实现。
int main(){
int n;///i用来记录当前轮到的人,cnt记录的是出局的人数,k用来报数,报到3的倍数就出局。
while(scanf("%d",&n),n!=0){
int i=0,j,cnt=0,k=0;int a[n+10]={0};/
while(cnt!=n){
i=(i+1)%n;
if(a[i]==0){
k++;
if(k%3==0){
cnt++;
a[i]=1;
}
}
}
printf("%d\n",i);
}
return 0;
}