HDU 1443 Joseph
2015-06-04 19:55
246 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1443
都忘记约瑟夫问题的解法了,纠结了很久,使用链表模拟搞了半天还有问题,搜题解解决的,表示要加油了。
解题思路,使用约瑟夫公式:p=(p+m-1)%n;获取下一个将被踢出去的人。
将m从k+1开始++,直到遇到m满足条件即可。
为什么从k+1开始呢?因为最后至少要执行k+1步才能将最后一个bad guy踢出去。
都忘记约瑟夫问题的解法了,纠结了很久,使用链表模拟搞了半天还有问题,搜题解解决的,表示要加油了。
解题思路,使用约瑟夫公式:p=(p+m-1)%n;获取下一个将被踢出去的人。
将m从k+1开始++,直到遇到m满足条件即可。
为什么从k+1开始呢?因为最后至少要执行k+1步才能将最后一个bad guy踢出去。
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int a[20]; int main(){ int k; memset(a,0,sizeof(int)); while(scanf("%d",&k)==1&&k!=0){ if(a[k]!=0){ printf("%d\n",a[k]); continue; } for(int i=k+1;;i++){ int p,cnt; for(p=0,cnt=k<<1;cnt>k;cnt--){ p=(p+i-1)%cnt; if(p < k){ cnt=0; } } if(cnt==k){ a[k]=i; printf("%d\n",i); break; } } } }
相关文章推荐
- 聚集索引和非聚集索引
- (10.3.5.5)产品需求文档的写作(五) – 用例文档(UML用例图、流程图)
- php面向对象(OOP)—static和const
- 【leetcode每日一题】NO141.Linked List Cycle
- [Machine Learning] Learning to rank算法简介
- (10.3.5.3)产品需求文档的写作(三) – 原型设计(手绘原型,灰模原型,交互原型)
- 一些树的知识
- Python Package Management
- 第三章四十一题
- BZOJ 1072 [SCOI2007]排列perm 状压DP
- 黑客们的故事(连载一)关于黑客
- 【文件下载】--文件下载的几种方式
- 掌握 Dojo 工具包
- javascript DOM基础
- iOS开发 - 多线程间通信
- 实现医生工作站的病程模板功能的代码(十二)
- 如何撤销浏览器注入JS代码的执行效果?
- 菜鸟接触sora学编程点滴1
- 第三章四十题
- MFCC