UVALive5520 UVA305 POJ1012 HDU1443 Joseph【数学计算+打表】
来源:互联网 发布:可惜不是你网络短剧 编辑:程序博客网 时间:2024/05/19 23:26
Joseph
Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 54650 Accepted: 20912
Description
The Joseph's problem is notoriously known. For those who are not familiar with the original problem: from among n people, numbered 1, 2, . . ., n, standing in circle every mth is going to be executed and only the life of the last remaining person will be saved. Joseph was smart enough to choose the position of the last remaining person, thus saving his life to give us the message about the incident. For example when n = 6 and m = 5 then the people will be executed in the order 5, 4, 6, 2, 3 and 1 will be saved.
Suppose that there are k good guys and k bad guys. In the circle the first k are good guys and the last k bad guys. You have to determine such minimal m that all the bad guys will be executed before the first good guy.
Suppose that there are k good guys and k bad guys. In the circle the first k are good guys and the last k bad guys. You have to determine such minimal m that all the bad guys will be executed before the first good guy.
Input
The input file consists of separate lines containing k. The last line in the input file contains 0. You can suppose that 0 < k < 14.
Output
The output file will consist of separate lines containing m corresponding to k in the input file.
Sample Input
340
Sample Output
530
Source
Central Europe 1995
Regionals 1995 >> Europe - Central
问题链接:UVALive5520 UVA305 POJ1012 HDU1443 Joseph
问题简述:(略)
问题分析:(略)
程序说明:占个位置,以后说明。
题记:(略)参考链接:(略)
AC的C++语言程序如下:
/* UVALive5520 UVA305 POJ1012 HDU1443 Joseph */#include <iostream>using namespace std;const int N = 14;int Joseph[N];bool f(int k, int m){ int n, s; n = 2 * k; s = 0; for(int i=0; i<k; i++) { s = (s + m - 1) % (n - i); if(s < k) return false; } return true;}void maketable(int k){ int j; for(int i=1; i<=k; i++) { j = i + 1; for(;;) { if(f(i, j)) { // t(k+1) Joseph[i] = j; break; } else if(f(i, j + 1)) { // t(k+1)+1 Joseph[i] = j + 1; break; } j += i + 1; } }}int main(){ maketable(N); int k; while(cin >> k && k) { cout << Joseph[k] << endl; } return 0;}
阅读全文
1 0
- UVALive5520 UVA305 POJ1012 HDU1443 Joseph【数学计算+打表】
- UVA305 - Joseph(数论 + 打表)
- HDU1443 && POJ1012:Joseph
- HDU1443 Joseph
- hdu1443 Joseph
- HDU1443-Joseph
- Uva 305 Joseph(数学+打表)
- POJ1012 Joseph
- poj1012 Joseph
- POJ1012 Joseph
- poj1012-Joseph
- poj1012 joseph
- POJ1012 Joseph
- 【poj1012】 Joseph
- POJ1012 Joseph
- Uva305——Joseph
- 【Joseph问题】poj1012 Joseph
- 【模拟】【HDU1443】 Joseph
- 围住浮动元素的3种方法
- JSON与对象,对象集合的相互转换
- final、finally和finalize
- 读取文件字符串排序后写进另一个文件
- HDOJ1164
- UVALive5520 UVA305 POJ1012 HDU1443 Joseph【数学计算+打表】
- freemarker关于select回显
- Best Time to Buy and Sell Stock II
- Ethereum以太网搭建本地开放环境简明教程
- Kafka性能测试方法
- 我的学习之路_第三十三章_会话技术 cookie&session
- AXIS调用jws发布的webservice出现Cannot find dispatch method for
- Sunday算法的一种Java实现(Leetcode28. Implement strStr())
- git sourcetree beyond compare