联通云呼叫中心:帮我解决一个最简单的问题,好吗?

来源:百度文库 编辑:中科新闻网 时间:2024/04/27 11:36:41
有17个人围成一圈(编号为0~16),从第0号的人开始从1报数,凡报到3的倍数的人离开圈子,然后再数下去,直到最后只剩一个人为止。编程求此人原来的编号是多少号。(答案:10)
(要求不采用“指针”来解决)

#define N 17
main()
{
int a[N],i,j=0,k,sum=0;
for(i=0;i<N;i++)
a[i]=1;
for(i=0;;i++)
{
if (i==N)
{
i=0;
sum=0;
for(k=0;k<N;k++)
sum+=a[k];
}
if(sum==1)break;

if(a[i]==1)
{
j+=1;
if(j%3==0)
a[i]=0;
}

}
for(i=0;i<N;i++)
if(a[i]==1)
printf("%d\n",i);
}

你要C的,还是要java的?

有点意思。不过我没完全搞懂意思。 有空做个。你写清楚一点。

是一数到3的倍数就离开重新开始呢!还是全部数完一次再开始呢?