Posts pythonTip 79 考古学家的困境
Post
Cancel

pythonTip 79 考古学家的困境

题目描述: 一个考古学家正在发掘古代的一座城市时,不小心被一个部分毁坏的石墙绊倒了。那个石墙上有数行奇异的数。这些数的前几位完整无缺,但不幸地,其余位的数字由于侵蚀作用而无法辨认。尽管如此,他注意到每一行完好的数字都像是2的幂的前几位,他就猜想这个石墙上原先的所有数都是2的幂。

验证自己的想法,他选择了能看清楚的一些数写成列表,并把列表交给你,请你求出最小的2的幂使幂的前若干位与他提供的列表中的数一致。所以你必须写一个

程序,对于给定的整数N(1 <= N <= 100),求出最小的指数E使这个数的前若干位与N相同。

注意:N的长度必须小于2^E的长度的一半。如N=1,当E等于4时,虽然2^4=16,

但因为1的长度等于16的长度的一半,所以不满足题上的条件,而只有在E等于7时,2^7=128才满足题意。

因此,N = 1时, 输出7

示例: 输入: N = 1 输出: 7

分析: 对于这个问题,直接使用模拟的方式进行模拟就好。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
N = str(N)

i = 0
while True:
    i += 1
    # 做 2 的 多少次幂啥的
    mi = 2 ** i
    # 然后将这个数转化成一个字符串
    sm = str(mi)
    # 然后判断长度是否符合要求
    if len(sm) <= len(N) * 2:
        continue
    # 再检查,开头是否包含其子串。
    if sm.startswith(N):
        break
    
print(i)
This post is licensed under CC BY 4.0 by the author.
Trending Tags
Contents

pythonTip 78 滑雪比赛

pythonTip 80 单词接龙

Trending Tags