POJ1012 Joseph
2015-05-08 22:46
218 查看
题目比较简单,因为k不大于14,所以直接使用暴力求解
递推公式为:ans[i]; //第i轮杀掉 对应当前轮的编号为ans[i]的人
ans[0]=0;
ans[i]=(ans[i-1]+m-1)%(n-i+1); (i>1 , 总人数n=2k 则n-i为第i轮剩余的人数)
若本题是从0开始报数,则递推式要改变为ans[i]=(ans[i-1]+m)%(n-i);
递推公式为:ans[i]; //第i轮杀掉 对应当前轮的编号为ans[i]的人
ans[0]=0;
ans[i]=(ans[i-1]+m-1)%(n-i+1); (i>1 , 总人数n=2k 则n-i为第i轮剩余的人数)
若本题是从0开始报数,则递推式要改变为ans[i]=(ans[i-1]+m)%(n-i);
#include <iostream> using namespace std; int main() { int k; int J[14] = {0}; while(cin >> k) { if(k==0) { break; } if(J[k]) { cout << J[k] << endl; continue; } int n = 2*k; //总人数 int ans[30] = {0}; int m = k+1; //m为我所求,初始化为k+1 for(int i = 1; i <= k; i++) { ans[i] = (ans[i-1] + m -1)%(n-i+1); if(ans[i] < k) { i = 0; m++; } } J[k] = m; cout << m << endl; } return 0; }
相关文章推荐
- POJ 1012 Joseph 变形约瑟夫环
- poj 1012 -- Joseph (约瑟夫环)
- POJ 题目1012Joseph(数学,约瑟夫环)
- Joseph - POJ 1012 打表
- POJ 1012:Joseph
- poj1012-Joseph
- Poj1012_Joseph
- poj1012 Joseph
- POJ 1012 Joseph
- POJ 1012 Joseph
- POJ 1012 Joseph
- POJ 1012 Joseph
- poj1012-Joseph
- POJ1012 Joseph
- POJ 1012 Joseph
- POJ1012 Joseph解题报告
- NYOJ 191 && POJ 1012 Joseph(约瑟夫环问题)
- POJ1012 Joseph
- 【POJ】1012 Joseph
- POJ 1012 Joseph