选太子
来源:互联网 发布:办公室坐垫 知乎 编辑:程序博客网 时间:2024/04/27 17:58
#include<iostream>
using namespace std;
//某皇帝有2m个儿子,现在要从中选出一个做太子,皇帝不知道该把那一个皇子立为太子,
//于是决定用下面的方法来选出太子,设每个太子的编号分别1 2、3、…、2m,
//按顺时针方向站成一个圆圈,现在从1号太子开始按顺时针方向数,数到第n个人,把他淘汰出局,
//然后从他的下一个人开始上述过程,当第m个人被淘汰时,转变方向继续从1开始数,
//重复上述过程,最后剩下的皇子将被立为太子。现在请你写一个程序,计算出几号皇子将被立为太子。
//3 2
//1
int main()
{
int a[100];
int m,n,i,sum=0,count=0;
cin>>m>>n;
for(i=0;i<2*m;i++)//给每个人编号
{
a[i]=i+1;
}
while(count<m)//先淘汰m个人
{
for(i=0;i<2*m;i++)
{
if(a[i]!=0)
{
sum++;
}
if(sum==n)//喊到n的被淘汰
{
a[i]=0;
count++;
sum=0;
}
if(count==m)//淘汰m个之后就要退出for循环
{
break;
}
}
}
while(count<2*m-1)//反向淘汰
{
while(i>=0)
{
if(a[i]!=0)
{
sum++;
}
if(sum==n)
{
a[i]=0;
count++;
sum=0;
}
i--;
}
i=2*m-1;
}
for(i=0;i<2*m;i++)
{
if(a[i]!=0)
{
cout<<a[i]<<endl;
}
}
return 0;
}
using namespace std;
//某皇帝有2m个儿子,现在要从中选出一个做太子,皇帝不知道该把那一个皇子立为太子,
//于是决定用下面的方法来选出太子,设每个太子的编号分别1 2、3、…、2m,
//按顺时针方向站成一个圆圈,现在从1号太子开始按顺时针方向数,数到第n个人,把他淘汰出局,
//然后从他的下一个人开始上述过程,当第m个人被淘汰时,转变方向继续从1开始数,
//重复上述过程,最后剩下的皇子将被立为太子。现在请你写一个程序,计算出几号皇子将被立为太子。
//3 2
//1
int main()
{
int a[100];
int m,n,i,sum=0,count=0;
cin>>m>>n;
for(i=0;i<2*m;i++)//给每个人编号
{
a[i]=i+1;
}
while(count<m)//先淘汰m个人
{
for(i=0;i<2*m;i++)
{
if(a[i]!=0)
{
sum++;
}
if(sum==n)//喊到n的被淘汰
{
a[i]=0;
count++;
sum=0;
}
if(count==m)//淘汰m个之后就要退出for循环
{
break;
}
}
}
while(count<2*m-1)//反向淘汰
{
while(i>=0)
{
if(a[i]!=0)
{
sum++;
}
if(sum==n)
{
a[i]=0;
count++;
sum=0;
}
i--;
}
i=2*m-1;
}
for(i=0;i<2*m;i++)
{
if(a[i]!=0)
{
cout<<a[i]<<endl;
}
}
return 0;
}
阅读全文
0 0
- 选太子
- 选太子
- 选太子
- 选太子
- 选太子
- 选太子
- 选太子
- 约瑟夫之选太子
- 【king 选 太子 154】
- king 选太子
- king 选太子
- king 选 太子
- 154 king 选 太子
- NYOJ-king 选 太子
- king选太子
- king 选 太子
- king 选 太子
- King 选太子
- 浅谈IT领域规律
- 第四次作业
- 关于我
- 1018
- 笔记8
- 选太子
- 习题4
- offsetWidth与offsetHeight以及currentStyle与getComputedStyle
- iOS核心动画 一一 钟表
- c++图书管理
- ubifs 分区格式化方法
- Principle for Mac 3.4 简体中文完美汉化包 原型设计工具
- Linux教程【6】- 目录处理命令
- EventBus