约瑟夫环。
AC之路, 其修远兮。
#include<stdio.h>
int main() {
int num;
int record[16] = {0}; //打个表,避免多次出现相同的输入且计算量过大
while ((scanf("%d", &num) != EOF) && num) {
if (record[num] != 0) {
printf("%d\n", record[num]);
} else {
for (int i = num+1; ; i++) {
int flag = 0, sum = 2 * num;
for (int j = i; ; j += i-1) {
if (j > sum) {
j = j % sum? (j%sum): sum;
}
if (j <= num) {
break;
} else {
sum--;
}
if (sum == num) {
flag = 1;
break;
}
}
if (flag == 1) {
printf("%d\n", i);
record[num] = i;
break;
}
}
}
}
return 0;
}