UVALive 3882 And Then There Was One 约瑟夫环问题
2015-10-14 19:44
459 查看
约瑟夫环问题是一类经典问题,具体的问题描述如下
已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
抄自百度百科2333
模拟法不谈,数学上对于这类问题有一般的递推公式如下
F(i)=(F(i−1)+m)modi(1<i<=n)
m为出去的人的编号
F(n)即为计数从0号作起点,出去n-1个人时留下的人的编号(0~n-1)
该题中套公式即可。最后答案加上m。
已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
抄自百度百科2333
模拟法不谈,数学上对于这类问题有一般的递推公式如下
F(i)=(F(i−1)+m)modi(1<i<=n)
m为出去的人的编号
F(n)即为计数从0号作起点,出去n-1个人时留下的人的编号(0~n-1)
该题中套公式即可。最后答案加上m。
#pragma comment(linker, "/STACK:102400000,102400000") #include<iostream> #include<iomanip> #include<cstdio> #include<cstring> #include<sstream> #include<stack> #include<queue> #include<fstream> #include<algorithm> #include<map> #include<set> #include<vector> #include<functional> #include<cmath> #define CLR(x) memset(x,0,sizeof(x)) #define SETMAX(x) memset(x,0x3f,sizeof(x)) #define SETNO(x) memset(x,-1,sizeof(x)) #define ll long long #define eps 3e-12 #define pow2(x) ((x)*(x)) #define forto(i,n) for(int i=0;i<n;i++) #define for1to(i,n) for(int i=1;i<=n;i++) #define VI vector<int> using namespace std; const double PI=acos(-1.0); #define INF 0x3f3f3f3f #define NINF 0xbfffffff using namespace std; int main() { ios_base::sync_with_stdio(false); int n,k,m; while(cin>>n>>k>>m,n||k||m) { int last=0; for(int i=2;i<n;i++) { last=(last+k)%i; } cout<<(last+m)%n+1<<endl; } return 0; }
相关文章推荐
- undefined reference to cv::imread(cv::String const&, int)
- 信息系统项目管理师-项目采购管理知识点
- Cluster: ROCK & CLOPE
- ZigZag Conversion
- Object - C的知识总结->方法
- UVALive 3882 And Then There Was One 约瑟夫环问题
- 宇宙蘑菇
- 2015年自然语言处理顶级会议EMNLP都讲了些什么?
- 信息系统项目管理师-风险管理知识点
- string删除空格
- Cross-compiling Qt Embedded 5.5 for Raspberry Pi 2
- Html5
- java中volatile关键字的含义
- 信息系统项目管理师-沟通管理知识点
- 我不是买不起,而是把钱花在了更有意义的地方
- cocos2d-x3.2 在Windows下打包Android平台APK(转载,只为记录)
- 从网络下载apk并自动安装
- UICollectionView
- iOS开发中最有用关键的代码合集(2)
- hdu 2795 Billboard(单点更新)