100个人排队,编号分别为1到100,每轮淘汰编号为奇数的人,然后重新编号,问最后剩下的人的初始编号是多少
例如初始时的编号为:
1,2,3,4,5,……,98,99,100
经过第一轮之后,所有奇数编号的人被淘汰,即淘汰了1,3,5,7,……,99
剩下50个人重新编号:
1,2,3,4,5,……,48,49,50
继续第二轮、第三轮,直至剩下最后一个人,问这个幸存者的初始编号是多少
归纳法
〇初始: 1,2,3,4,5,……,98,99,100
第一轮淘汰:1 ,2,3 ,4,5 ,……,98,99 ,100
①第一轮过后剩余:2,4,6,8,10,……,96,98,100
第二轮淘汰:2 ,4,6 ,8,10 ,……,96,98 ,100(第二轮往后末尾幸存者的推断方法见下文)
②第二轮过后剩余:4,8,12,……,96,100
第三轮淘汰:4 ,8,12 ,16,……,96,100
③第三轮过后剩余:8,16,……,96
第四轮……
……
由此可以归纳得出,
在〇序列中,开头的数字是 1=201 = 2^01=20,并且两个相邻数字间的差也为1=201 = 2^01=20
在①序列中,开头的数字是 2=212 = 2^12=21,并且两个相邻数字间的差也为2=212 = 2^12=21
在②序列中,开头的数字是 4=224 = 2^24=22,并且两个相邻数字间的差也为4=224 = 2^24=22
……
我们要找的幸存者就是最后一轮中的开头的数字,这个数字也必定是2的次幂,所以幸存者的初始编号为26=642^6 = 6426=64,因为64是小于100的最大的2的次幂;
由此可以推断,若有N个人排队,则幸存者的初始编号为小于N的最大的2的次幂;
追问:倒数第二个幸存者是谁?最后一次淘汰时有2个人参加还是3个人参加?
我们知道最后的幸存者是64号,那么倒数第二轮的排列情况就是:32,64,96;由此可以回答追问问题;
这个追问的意义是,我们可以知道决赛是在哪几个人之间发生,当我们处在这个游戏中,而幸存者的编号已经被人霸占时,我们还可以去选择决赛圈的其它编号来获得次佳的成绩;
100个人排队,编号分别为1到100,每轮淘汰编号为奇数的人,然后重新编号,问最后剩下的人的初始编号是多少相关推荐
- 有n个人围成一圈,顺序排号,从第一个人开始报数(1-3报数),凡是报数为3的人退出圈子,问最后留下的人原来的编号是多少?
有n个人围成一圈,顺序排号,从第一个人开始报数(1-3报数),凡是报数为3的人退出圈子,问最后留下的人原来的编号是多少? 花了半个下午搞出来的代码,调试了一会,一切正常,感觉还不错! '''解题思路: ...
- 1056: 约瑟夫问题【n人围成一圈,报数为3的人退出圈子,问最后留下的人原来的编号。】
Description 有n人围成一圈,顺序排号.从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位. Input 初始人数n Output 最后一人的初始编号 ...
- 100个人围成一圈c语言,C语言 约瑟夫圈问题:N个人围成一圈,从第一个人开始按顺序报数并编号1,2,3,……N,然后开始从第一个人转圈报数,凡是报到3的退出圈子。则剩下的最后一个人编号是多少。...
样例输入3 输出2 输入100 输出91 代码及分析: #include int main() { int i,n,N,out,a[1000]; out=i=n=0; //用out记录退出圈子的 ...
- cqupt题库 n个人围成一圈,顺序编号。从第一个人开始从1到m报数,凡报到m的人退出圈子,编程求解最后留下的人的初始编号。 程序运行示例: 6 3(两个输入数据之间有空格) 1
n个人围成一圈,顺序编号.从第一个人开始从1到m报数,凡报到m的人退出圈子,编程求解最后留下的人的初始编号. 程序运行示例: 6 3(两个输入数据之间有空格) 1 输入格式:scanf("% ...
- 100块钱买100只鸡php,使用JS计算买100只鸡问题
这篇文章主要介绍了JS计算输出100元钱买100只鸡问题的解决方法,简单描述了100元钱买100只鸡问题并结合实例形式分析了问题解决的思路与具体实现方法,需要的朋友可以参考下 本文实例讲述了JS计算输 ...
- c语言随机产生10个30 100,c语言编写随机产生10个100~200之间整数,幷按从大到小排序...
你所写的代码是正确的,想要查看,请用这个:includeint main(){char ch;scanf("%c",&ch);if(ch>='A'&ch){c ...
- 枚举算法:概率计算。在标注编号分别为1,2,...,n的n张牌中抽取3张,试求抽出3张牌编号之和为素数的概率。输入整数n(3<n<=3000),输出对应的概率(四舍五入到小数点后第3位)。
概率计算.在标注编号分别为1,2,-,n的n张牌中抽取3张,试求抽出3张牌编号之和为素数的概率.输入整数n(3<n<=3000),输出对应的概率(四舍五入到小数点后第3位). 思路: 组合 ...
- linux 脚本1加到100,shell脚本之从1加到100之和的思路
一.使用双括号(())进行计算 #!/bin/bash # a=0 for((b=0;b<=100;b++));do ((a=a+b)) //也可以写成a=$((a+b)) done echo ...
- python练手经典100例-python零基础练手项目100+
文章目录 Python3 100例 实例001:数字组合 实例002:"个税计算" 实例003:完全平方数 实例004:这天第几天 实例005:三数排序 实例006:斐波那契数列 ...
最新文章
- 两个ListBox中的项互相移动及上下移动
- 【iOS报错】“this class is not key value coding-compliant for the key userPhoneNum”给字典设置键值对的时候报错...
- ubuntu 下使用mysql
- 3_4 IteratorMode 迭代器模式
- java不使用除号实现除法运算_LeetCode29 Medium 不用除号实现快速除法
- [Swift]loadNibNamed方法
- CSS3特效 - 会呼吸的button按钮
- cpython和jpython_在J内部使用Python
- 前端学到什么程度可以找到工作?
- git21天打卡day19-新建远程仓库
- 原子操作--sync/atomic的用法
- swt中关于Text.setSelection()的记录
- 迅雷防踢补丁:一个刷流量木马的简单分析
- 贪吃蛇小游戏(基于Python)
- powershell和cmd区别
- 【菜鸟收藏:全方位掌握Excel的ROUNDUP函数设置】
- 大O、小o、大Ω、小ω、大Θ符号在算法中是什么意思?
- 各个领域中的经典论文,看看你都读过哪些 - 易智编译EaseEditing
- 远程桌面--外网访问内网多台电脑
- 泰坦尼克号生存预测(超详细)
热门文章
- 7 再也不去酒吧喝酒系列
- 知识图谱表示学习 TransE: Translating Embeddings for Modeling Multi-relational Data
- 苏大文正计算机基础成绩公布,2019苏大文正学院投档分数线公布:文科319分,理科325分...
- Word宋体小四变成宋体四号后行距变大了很多、无法缩小的解决办法
- Cookie&Session
- 【甄选靶场】Vulnhub百个项目渗透——项目五十二:Fowsniff-1(任务挟持)
- 【嵌入式AI周报20210430期】Xilinx推出K26视觉AI核心板、黑芝麻智能发布196TOPS华山A1000
- delphi 解析Json格式
- 【FTP工具类】提供FTP服务器的连接, 查找文件目录,及读取文件内容等操作
- R语言多项式线性模型:最大似然估计二次曲线