51nod 1074 约瑟夫环V2
来源:互联网 发布:mmd各种动作数据百度云 编辑:程序博客网 时间:2024/06/05 01:53
1074 约瑟夫环 V2
基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题
收藏
关注
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
用函数图像做的
然后必须让kx+b<x+1
所以每次kx+b<=x+1 的时候
更新b
- -然后b超界了
然后必须让kx+b<x+1
所以每次kx+b<=x+1 的时候
更新b
- -然后b超界了
就让kx+b=新的b 然后变成kx1+b=b b+nk>=x+n
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;//long long f[3000];int main(){ unsigned long long i,j,n,k; cin>>n>>k; //f[1]=0;i=2; f[1]=0; // for(i=2;i<=n;i++) f[i]=(f[i-1]+k)%i; long long y=k%2; long long x=2,t=0; long long z1,z2; z1=y; z2=x; while(x<=n) { z1=y; z2=x; t=(x-y)/(k-1); if(t==0) t++; y=y+t*k-((y+t*k)/(x+t))*(x+t); x+=t; //cout<<y<<' '<<f[x]<<' '<<x<<' '<<z1<<' '<<z2<<endl; } cout<<(z1+(n-z2)*k)%(n)+1<<endl;}
0 0
- 51nod 1074 约瑟夫环V2
- 51Nod-1074-约瑟夫环 V2
- 51nod 1074 约瑟夫环 V2
- 约瑟夫问题 51nod 1073 约瑟夫环
- 【51Nod1074】约瑟夫环 V2
- 51nod 1073 约瑟夫环
- 51nod-1073约瑟夫环
- 51nod 1073 约瑟夫环
- 51nod 1073 约瑟夫环
- 51nod 1073 约瑟夫环
- 51nod 5173 约瑟夫环
- 51NOD 1073 约瑟夫环
- 51Nod 1073 约瑟夫环
- 51 nod 1073 约瑟夫环
- 51Nod-1073-约瑟夫环
- 51nod 1073 约瑟夫环
- 51Nod 1073 约瑟夫环
- 51Nod-1073 约瑟夫环
- Yii2 里使用Redis扩展
- 电路与Multisim 感觉自己画完的电路图超级乱怎么办?快用网络标号!
- Qt5:一个文本框输入字符,另一个文本框输出其大写格式
- Java设计模式—访问者模式
- 音频中常见的技术指标
- 51nod 1074 约瑟夫环V2
- 如何获取上传到sharepoint上的文件的信息,以及expand的使用
- Sum of Two Integers
- webservice通用接口
- LeetCode OJ-283. Move Zeroes
- Kafka性能测试分析
- 点击按钮,弹出信息的显示
- 抽象类与抽象方法理解
- 多态时,成员的特点