博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
练习1--选老大问题
阅读量:5045 次
发布时间:2019-06-12

本文共 522 字,大约阅读时间需要 1 分钟。

题目

有156个海盗在一个岛上,他们决定选一个人出来做老大,由于人这么多,选谁当老大一直没有选好,于是他们想出来一个办法,把这156个人从1到156编号,然后按1, 2, 1, 2, …报数,报到1的退出选举,剩下来的人继续重新报数,然后把‘1’的人踢出局,最后剩下来的就是老大。那么请问,谁是老大?

分析

简化过程:

  1. 1到156不停的除2,最后剩下一个数,那个数是多少。
  2. 小于156的2的幂的最大值
  3. 即改数为128

代码

  1. 直接方式:
a = [n for n in range(1,157)]times = 1while 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])
  1. 数学方式:
x = 1while x < 156:    x *=2print("The boss is :%d" % (x/2))

转载于:https://www.cnblogs.com/WeyneChen/p/6670579.html

你可能感兴趣的文章
Phpstorm如何连接服务器
查看>>
Vim 插件的安装
查看>>
Configure WCF
查看>>
7-5
查看>>
用 Eclipse 开发 Android 应用程序
查看>>
geoserver扫盲 openlayers相关
查看>>
Hibernate入门二
查看>>
ASP.Net中使用XMLDataSource
查看>>
手推C3算法
查看>>
Beta阶段总结
查看>>
嵌入式Linux开发环境搭建,问题ping、nfs的解决
查看>>
iOS之设置头像(访问系统相册、本地上传)
查看>>
iOS之限制TextField的输入长度
查看>>
webapi 安全验证与权限验证
查看>>
tomcat下部署多个项目
查看>>
Docker-Compose
查看>>
Python list知识内容
查看>>
C - A Plug for UNIX - poj 1087(最大流)
查看>>
UNICODE与ANSI的区别
查看>>
代码备份2
查看>>