版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Yk_0311/article/details/82117352
'''
这里有100 张写着数字1~100 的牌,
并按顺序排列着。最开始所有 牌都是背面朝上放置。
某人从第2 张牌开始,隔1 张牌翻牌。然后第2, 4, 6, …, 100 张牌就会变成正面朝上。
接下来,另一个人从第3 张牌开始,隔2 张牌翻牌(原本背面朝上 的,翻转成正面朝上;
原本正面朝上的,翻转成背面朝上)。再接下来, 又有一个人从第 4 张牌开始,隔 3 张牌翻牌。
像这样,从第n 张牌开始,每隔n-1 张牌翻牌,直到没有可翻动 的牌为止。
'''
# 问题:求当所有牌不再变动时,所有背面朝上的牌的数字
ls = [0] * 100 # 建立一个列表,假设0为牌背面朝上,1为牌正面朝上
for i in range(1, 100): # 100张牌需要99次翻牌
loction = i
while loction <= 99:
if ls[loction] == 0: # 如果是背面朝上
ls[loction] = 1
elif ls[loction] == 1: # 如果是背面朝上
ls[loction] = 0
# 做完一次循环,去改变下一个值
loction = loction + i + 1
#输出背面朝上的牌
for i in range(100):
if ls[i]==0:
print(i+1,end=" ")
输出:
1 4 9 16 25 36 49 64 81 100
要点:
要想到怎么设置翻牌,翻牌的次数