1451 - C语言-报数
有n人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位。
Input
初始人数n
Output
最后一人的初始编号
Examples
Input
3
Output
2
Solution C
#include <stdio.h> main(){ int n,i=1,j=0,k=0,a[1000]={0}; scanf("%d",&n); while(j<n-1){ if(i==3&&a[k]==0){a[k]=1;j++;} k++;if(k==n)k%=n; if(a[k]==0)i=i%3+1; } for(i=0;i<n;i++)if(a[i]==0){ printf("%d",i+1);break; } }
Solution C++
#include "stdio.h" #include "string.h" int main(int argc, char* argv[]) { int num[100],v[100],n,i,j,count; while(~scanf("%d",&n)) { memset(v,0,sizeof(v)); for(i=1;i<=n;i++) num[i]=i; j=1;count=0;i=1; while(i<n) { if(j>n) j%=n; if(v[j]==0) { count++; } if(count==3) { count=0;i++;v[j]=1; } j++; } for(i=1;i<=n;i++) if(v[i]==0) printf("%d\n",i); } return 0; }