30个人(编号为0~29)围成一圈,从第0号开始报数1,凡报到n(n为输入数据,n>=1)的人离开圈
30个人(编号为0~29)围成一圈,从第0号开始报数1,凡报到n(n为输入数据,n>=1)的人离开圈子,后面的人再从1开始报数,照此进行下去,最后留下的为原来第几号?要求用一维数组实现算法,输出最后留下的1个人的数组下标。 #include "stdio.h" int main() { int a[30]={1},m,n,i,r; scanf("%d",&m); for(n=30,r=0;n!=1;) {for(i=0;i29) r=r-30; if(a[r]!=0) i++;} a[r-1]=0; n=n-1; } for(r=0;a[r]!=0;r++); printf("%d",r); } 大佬指教一下 我写的哪里有问题吗