一个很简单很经典的问题。如下的做法没有用到链表,是一个比较清晰明了代码量小的写法。
代码如下:
#include <iostream>
using namespace std;
int main()
{
int n, m, a[301], k, j, num, i;
cin >> n >> m;
while ( (n != 0) && (m != 0) )
{
for (i = 1; i <= n; ++i) a[i] = 1;
j = 0; //报数的累加器
k = 0; //统计出去的人数
i = 1;
while(true)
{
if (a[i] == 1)
{
j += a[i];
if (j == m)
{
j = 0;
a[i] = 0;
++k;
}
if (k == n)
{
num = i;
break;
}
}
i++;
if (i > n) i = 1;
}
cout << num << endl;
cin >> n >> m;
}
system("pause");
return 0;
}