选太子
来源:互联网 发布:java架构师需要几年 编辑:程序博客网 时间:2024/04/27 14:22
描述:
某皇帝有2m个儿子,现在要从中选出一个做太子,皇帝不知道该把那一个皇子立为太子,于是决定用下面的方法来选出太子,设每个太子的编号分别1、2、3、…、2m,按顺时针方向站成一个圆圈,现在从1号太子开始按顺时针方向数,数到第n个人,把他淘汰出局,然后从他的下一个人开始上述过程,当第m个人被淘汰时,转变方向继续从1开始数,重复上述过程,最后剩下的皇子将被立为太子。现在请你写一个程序,计算出几号皇子将被立为太子。
输入:
输入两个正整数m n
Input two positive integer.
输出:
输出太子的编号
Output the number.
输入样例:
3 2
输出样例:
1
#include <iostream>using namespace std;int m, n;int a[10000];void init();int lucknum();int lastone();int main(){ int num;cin >> m >> n;init();num = lucknum();cout << num << endl; return 0;}int lucknum(){ int num; int i; int dcnt; int ncnt; int counter; dcnt = 0; counter = 0; ncnt = 0; i = 0; while(counter < 2 * m - 1) { if(a[i] == 1) { ncnt ++; if(ncnt == n) { ncnt = 0; a[i] = 0; counter ++; if(counter == m) dcnt ++; } } if(dcnt % 2 == 0) i = (i + 1) % (2 * m); else i = (i + (2 * m - 1)) % (2 * m); } num = lastone(); return num;}int lastone(){ int i; for(i = 0; i < 2 * m; i ++) { if(a[i] == 1) break; } return (i + 1);}void init(){ int i; for(i = 0; i < 2 * m; i ++) { a[i] = 1; }}
阅读全文
1 0
- 选太子
- 选太子
- 选太子
- 选太子
- 选太子
- 选太子
- 选太子
- 约瑟夫之选太子
- 【king 选 太子 154】
- king 选太子
- king 选太子
- king 选 太子
- 154 king 选 太子
- NYOJ-king 选 太子
- king选太子
- king 选 太子
- king 选 太子
- King 选太子
- Python学习笔记(十一)
- ### 考前要注意的小细节 ###
- JAVA编程思想的理解(POP,OOP,SOA,AOP)
- 图像的峰值信噪比(peak signal to noise ratio, PSNR)
- JS数组常见算法
- 选太子
- CentOS---NFS安装、配置、使用
- 小朋友学C语言(1):Hello World
- 欢迎使用CSDN-markdown编辑器
- java-ArrayList&&LinkedList
- ionic练习(3)- 实现页面切换+侧拉菜单
- 二叉排序树
- 优雅地创建复杂对象 —— Builder 模式
- 关于TCP协议(二)