您的位置:首页 > 其它

约瑟夫问题的实现

2018-01-02 15:50 204 查看
n个人围成一个圈,每个人分别标注为1、2、...、n,要求从1号从1开始报数,报到k的人出圈,接着下一个人又从1开始报数,如此循环,直到只剩最后一个人时,该人即为胜利者。例如当n=10,k=4时,依次出列的人分别为4、8、2、7、3、10,9、1、6、5,则5号位置的人为胜利者。给定n个人,请你编程计算出最后胜利者标号数。(要求用单循环链表完成。)Description第一行为人数n;
第二行为报数k。Input输出最后胜利者的标号数。Output
1234510 4
Sample Input
1235
Sample Output注意特殊情况,比如输入如下:
1
1
输出应该为1.
#include <iostream>
using namespace std;

int main(){
int n,m,s=0;
cin>>n;
cin>>m;
for(int i=2;i<=n;i++){
s=(s+m)%i;
}
cout<<s+1;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: