/*有奖思考题,一只猫抓了50只老鼠,依次编号1-50,先吃掉编号为奇数的, 然后剩下的再站队重编号,再吃掉编号为偶数的, 然后继续站队吃奇数丶偶数循环,问最后剩下的是第一次编号的第几只? */ #include<stdio.h> #define n 50 int main() { int a[n+1],i,k=1,m,x,j; for(i=1;i<=n;i++) { a[i]=i;//number } for(j=3;k<n-1;j++) { x=1; if(j%2==1)m=1; else m=0; for(i=1;i<=n;i++)//一轮 { if(a[i]!=0) { if(a[i]%2==m) { a[i]=0;k++;//have been eaten } else {a[i]=x;x++;}//number } } } for(i=1;i<=n;i++) if(a[i]!=0) printf("%d ",i); return 0; }