#include<cstdio>
using namespace std;
int dp;
int main(){
int n, k, m, i;
while(scanf("%d%d%d", &n, &k, &m)){
if(n == 0 && m == 0 && k == 0) break;
dp = 0;
for(i = 2; i < n; i++)
dp = (dp + k) % i;
printf("%d\n", (dp + m) % n + 1);
}
return 0;
}
将每个人的编号减1(方便使用模运算);
运用递归;
本文介绍了一个使用模运算和递归解决特定问题的C++算法。该算法通过输入三个整数参数n、k和m,利用模运算计算出一个特定序列的最后一个元素,并输出其在编号为0到n-1的范围内的位置加一的结果。
1027

被折叠的 条评论
为什么被折叠?



