Joseph问题
来源:互联网 发布:java thumbnails 编辑:程序博客网 时间:2024/05/16 06:29
题目描述:
原始的Joseph问题描述如下:有n个人围坐在一个圆桌周围,把这n个人依次编号为1、2、3……n。从编号是1的人开始数,数到第m个人出列,然后从出列的下一个人重新开始报数,数到第m个人时又出列,以此类推。当n=6,m=5时,出列顺序依次是5,4,6,2,3,1。
现在的问题是:假设有k个好人和k个坏人。好人的编号是1到k,坏人的编号是k+1到2k。我们希望求出m的最小值,使得先出列的k个人都是坏人。
【输入】
4
【输出】
30
思考:要使得先出列的人都是坏人,m的值必定大于k,每报一次数,人数就要减1(重要),并且求一次mod。具体不好说,看看程序!
#include<cstdio>
long k,m,begin;
int check(long remain)
{
long result=(begin+m)%remain;//当前人的下标,每循环一次,后面的人往前面补
if(result>=k)
{
begin=result;return 1; //是坏人
}
else
return 0; //是好人
}
int main()
{
long find=0;
scanf("%ld",&k);
m=k;
while(!find)
{
find=1;begin=0;//从第一个人开始报数
for(int i=0;i<k;++i)
if(!check(k+k-i))//k+k-i为当前人数
{
find=0;break; //找到的是好人,继续寻找
}
++m;
}
printf("%ld\n",m);
return 0;
}
就是这么简单!
- 【Joseph问题】poj1012 Joseph
- joseph问题
- joseph问题
- Joseph问题
- {joseph问题}
- Joseph问题
- Joseph问题
- PKU1012 Joseph 约瑟夫问题
- 约瑟夫(Joseph)问题
- Joseph环问题
- Joseph环问题
- 约瑟夫问题(Joseph)
- 约瑟夫环问题(joseph)
- Python 新手之 Joseph 问题
- PKU ACM 1012 JOSEPH问题
- POJ1012 Joseph 约瑟夫问题+枚举
- Joseph问题和POJ1022&POJ2244
- 一步一步求解约瑟夫(Joseph)问题
- 在DOCKER中构建使用RUBY2.1及以上版本的镜像
- Stamp——邮票问题
- Read MIPS Run2nd MIPS cache(转)
- 【总结】石门中学创新班2015.5.16
- 创建自定义JSR303的验证约束
- Joseph问题
- DataCastle[验证码识别竞赛]冠军——李超专访
- 卫星照片(satel)
- 牛计数(cnums)
- 74Kc mini_boot
- Java IO操作——数据操作流DataOutputStream和DataInputStream的使用
- BFS(宽度优先搜索)
- 嵌入式的HelloWorld
- 安卓开发_SQLiteOpenHelper