51Nod 1073约瑟夫环
Posted kimsimple
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51Nod 1073约瑟夫环相关的知识,希望对你有一定的参考价值。
N个人坐成一个圆环(编号为1 - N),从第1个人开始报数,数到K的人出列,后面的人重新从1开始报数。问最后剩下的人的编号。
例如:N = 3,K = 2。2号先出列,然后是1号,最后剩下的是3号。
Input
2个数N和K,表示N个人,数到K出列。(2 <= N, K <= 10^6)
Output
最后剩下的人的编号
Input示例
3 2
Output示例
3
#include <bits/stdc++.h> using namespace std; int main(void){ int gg, n, k; cin >> n >> k; gg=0; for(int i=2; i<=n; i++){ gg=(gg+k)%i; //前面说的f(x)只是为了我们更直观地理解,其实直接用一个变量保存上一轮序号就可以了 } cout << gg+1 << endl; return 0; }
以上是关于51Nod 1073约瑟夫环的主要内容,如果未能解决你的问题,请参考以下文章