n个人排成一圈。从某个人开始,按顺时针方向依次编号。从编号为1的人开始顺时针"1、2、1、2……"报数,报到2的人退出圈子。这样不断循环下去,圈子里的人将不断减少。由于人的个数是有限的,因此最终会剩下一个人。试问最后剩下的人最开始的编号。
#include<bits/stdc++.h>
using namespace std;
long long m,n;
long long a[10010],k,x,s;
int main(){
cin>>n;
for(;s<n-1;)
{
k+=1;
if(k>n) k=1;
if(a[k]==0) m+=1;
if(m==2)
{
m=0,s+=1;
a[k]=1;
}
}
for(int i=1;i<=n;i++)
{
if(a[i]!=1) cout<<i;
}
return 0;
}