其实就是约瑟夫环问题,地推公式如下:i为参与报数的人数,f[i]为报数m结束时最后留下来的人的编号。
f[1] = 0
f[i] = (f[i-1]+m)%i
代码
#include <iostream>
using namespace std;
int m = 3;
void JosephusProblem(int n) {
int i;
int f = 0;
for (i = 2; i <= n; i++) {
f = (f + m) % i;
}
printf("%d\n", f + 1);
return;
}
int main() {
int n, m;
while (cin >> n) {
JosephusProblem(n);
}
return 0;
}
加油!!!