【51Nod1074】约瑟夫环 V2
来源:互联网 发布:cdn.bootcss.com 知乎 编辑:程序博客网 时间:2024/05/16 11:21
N个人坐成一个圆环(编号为1 - N),从第1个人开始报数,数到K的人出列,后面的人重新从1开始报数。问最后剩下的人的编号。
例如:N = 3,K = 2。2号先出列,然后是1号,最后剩下的是3号。
Input
2个数N和K,表示N个人,数到K出列。(2 <= N <= 10^18, 2 <= K <= 1000)
Output
最后剩下的人的编号
Input示例
3 2
Output示例
3
题解
对于n较小的时候
我们有递推式f[i]=(f[i-1]+k)%i(http://blog.csdn.net/kangroger/article/details/39254619)
对于k远小于n,我们可以跳着删k个以至于不用模i,找一找关系改一下递推即可。
代码
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int mod=1000000007;ll n,m,ans,x;int main(){ cin>>n>>m; ans=0; for (ll i=2;i<=n;i+=x+1) { x=(i-ans-m)/(m-1); if (x<0) x=0; if (i+x+1>n) x=n-i; ans=(ans+m*(x+1))%(i+x); } cout<<ans+1; return 0;}
阅读全文
0 0
- 【51Nod1074】约瑟夫环 V2
- 51nod 1074 约瑟夫环V2
- 51Nod-1074-约瑟夫环 V2
- 51nod 1074 约瑟夫环 V2
- 约瑟夫问题 51nod 1073 约瑟夫环
- 51 Nod1073约瑟夫环
- 51nod1073 约瑟夫环
- 51nod1073 约瑟夫环
- 约瑟夫问题、约瑟夫环
- 51nod 1073 约瑟夫环
- 51nod-1073约瑟夫环
- 51nod 1073 约瑟夫环
- 51nod 1073 约瑟夫环
- 51nod 1073 约瑟夫环
- 51nod 5173 约瑟夫环
- 51NOD 1073 约瑟夫环
- 51Nod 1073 约瑟夫环
- 51 nod 1073 约瑟夫环
- 微信小程序,对象转换成数组
- Oracle 中的join大法
- GC之开篇
- ES集群搭建
- MySQL完成首次登录
- 【51Nod1074】约瑟夫环 V2
- FZU-2205
- spring源码解析-从xml配置文件中获取bean
- ubuntu16.04下搭建ngnix+php+mysql+Redis,实现数据库的读写分离
- 将hibernate插件导入eclipse中
- error: cannot spawn git: No such file or directory问题解决办法
- C/C++题库整理(三)
- leetcode--1.Two Sum
- Python字典的fromkeys方法“疑惑”解析