这个和1012题 如出一辙。。。相比之下还要简单一些。。。。直接应用约瑟夫递推公式枚举求解就可以了。。。
#include <iostream>
#include<cstdio>
using namespace std;
int main(int argc, char** argv) {
int n, a[155] = {0}, k, m, i;
while (scanf("%d", &n) && n) {
if (!a[n]) {
m = 1;
while (1) {
k = 0, m++;
for (i = 2; i < n; i++)
k = (k + m) % i;
k = (k + 1) % i;
if ((k+1) == 2) {
a[n] = m;
printf("%d\n", m);
break;
}
}
} else
printf("%d\n", a[n]);
}
return 0;
}