题目:
一摞硬币共有m枚,每一枚都是正面朝上。取 下最上面的一枚硬币,将它翻面后放回原处。然后取下最上面的2枚硬币,将他们一起翻面后再放回原处。再取3枚,取4枚……直至m枚。然后再从这摞硬币最上 面的一枚开始,重复刚才的做法。这样一直做下去,直到这摞硬币中的每一枚又都是正面朝上为止。例如,m为1时,翻两次即可。m为2时,翻3次即可;m为3 时,翻9次即可;m为4时,翻11次即可;m为5时,翻24次即可;…;m为30时,翻899次即可;…
输 入:
仅有的一个数 字 是这摞硬币的枚数m,0<m<1000。
输 出:
为了使这摞硬币中的每一枚又都是正面朝上所必 需翻的次数。
#假设硬币正面朝上为a,反面朝上为b
n = int(input('输入硬币数'))
lis = ['a'] * n
k = 0
def fun(n):
global k, lis
for i in range(1, n + 1):
k = k + 1
lis = lis[0: i][::-1] + lis[i: n + 1]
for j in range(i):
if lis[j] == 'a':
lis[j] = 'b'
elif lis[j] == 'b':
lis[j] = 'a'
if lis.count('a') == n:
return k
return fun(n)
print(fun(n))