本文中递推关系部分参考文章如下:
参考文章:约瑟夫环问题的两种解法(详解)
1.递推关系
最后一步剩下的编号为0,该编号上一步对应的编号为(0+m)%2=1,1这个编号上一步对应的编号为(1+m)%3=1,1这个编号上一步对应的编号为(1+m)%4=0,以此类推。
2.code
#include <iostream>
using namespace std;
int main()
{
int n,m;
cin >> n >> m;
if(n < 1 || m < 1){
return 0;
}
int pre = 0;
int cur = 0;//递推公式中的编号从1开始
for(int i=1; i<n; i++){
cur = (pre+m)%(i+1);
pre = cur;
}
++cur;//实际编号从1开始
cout << cur;
return 0;
}