題目描述
有n人圍成一圈,順序排號。從第1個人開始報數(從1到3報數),凡報到3的人退出圈子,問最後留下的是原來的第幾號的那位。
輸入
輸出
樣例輸入
3
4
5
10
樣例輸出
2
1
4
4
提示
思路: 想法很簡單,就是 變量 sum 從 1開始到 3 ,如果是3 的倍數,a[i] 就是變爲零 ,也就是退出的意思,i 一直都是從1到 最後一個數增加的,也就是形成了一個圈了的!
#include<stdio.h>
#include<string.h>
int main()
{
int n;
while(scanf("%d",&n)==1)
{
int a[200];
for(int i=1;i<=n;i++)
a[i]=i;
int su=n,sum=1;
while(1)
{
for(int i=1;i<=su;i++)
{
if(a[i]==0)
continue;
if(sum%3==0)
{
a[i]=0;
n--;
sum=0;
}
sum++;
}
if(n==1)
break;
}
for(int i=1;i<=su;i++)
{
if(a[i]!=0)
printf("%d\n",i);
}
}
return 0;
}