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。
第二行为报数k。
Input
输出最后胜利者的标号数。
Output
1
2
3
4
5
|
10
4
|
Sample Input
1
2
3
|
5
|
Sample Output
注意特殊情况,比如输入如下:
1
1
输出应该为1.
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;
}