首页 > 代码库 > 练习1--选老大问题
练习1--选老大问题
题目
有156个海盗在一个岛上,他们决定选一个人出来做老大,由于人这么多,选谁当老大一直没有选好,于是他们想出来一个办法,把这156个人从1到156编号,然后按1, 2, 1, 2, …报数,报到1的退出选举,剩下来的人继续重新报数,然后把‘1’的人踢出局,最后剩下来的就是老大。那么请问,谁是老大?
分析
简化过程:
- 1到156不停的除2,最后剩下一个数,那个数是多少。
- 小于156的2的幂的最大值
- 即改数为128
代码
- 直接方式:
a = [n for n in range(1,157)] times = 1 while len != 1: for b in a: if(b%(2*times) != 0): a.remove(b) times *=2 len = a.__len__() print("The boss is :%d" %a[0])
- 数学方式:
x = 1 while x < 156: x *=2 print("The boss is :%d" % (x/2))
练习1--选老大问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。