17个人围成圈,编号为1—17,从第1号开始报数,报到3的倍数的人离开,一直数下去,直到最后只剩下1人。求此人的编号。
用数组做,怎么循环。
长度为17的数组,初始为0,找到第三个不是0的改为1
#include <iostream>
using namespace std;
int main()
{
int a[17] = {0};
int j=0,i;
for(i=0;i<16;i++)
{
int count = 0;
while(1)
{
if(a[j] == 0)
{
count++;
if(count == 3)
break;
}
j = (j+1)%17;
}
a[j] = 1;
}
for(i=0;i<17;i++)
if(a[i] ==0)
{
cout<<i+1;
break;
}
return 0;
}