本文中递推关系部分参考文章如下:
参考文章:约瑟夫环问题的两种解法(详解)

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;
}
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐