有n(0<n<=50,且n为整数)个人围成一圈,顺序排号(1,2,…,n)。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
Input
本题有多组数据。每组数据只有一个整数N,独占一行。(1≤N≤50)
Output
对每组数据,输出相应的结果编号。
Sample Input
20
50
Sample Output
20
11
#include <iostream>
using namespace std;
int main()
{int i,k,m,n,num[50],*p;
cin>>n;
p=num;
for (i=0;i<n;i++)
*(p+i)=i+1;
i=0;
k=0;
m=0;
while( m<n-1)
{if (*(p+i)!=0) k++;
if (k==3)
{*(p+i)=0;
k=0;
m++;
}
i++;
if(i==n) i=0;
}
while( *p==0) p++;
cout<< *p<<endl;
return 0;
}