案例一:
A、B、C、D、E 五人在某天夜里合伙去捕魚,到第二天凌晨時都疲憊不堪,于是各自找地方睡覺。
日上三桿
A 第一個醒來,他將魚分為五份,把多余的一條魚扔掉,拿走自己的一份。
B 第二個醒來,也將魚分為五份,把多余的一條魚扔掉拿走自己的一份。 。
C、D、E依次醒來,也按同樣的方法拿魚。
問他們至少捕了多少條魚?
代碼如下:
def main():
fish = 1
while True:
total, enough = fish, True
for _ in range(5):
if (total - 1) % 5 == 0:
total = (total - 1) // 5 * 4
else:
enough = False
break
if enough:
print(f'總共有{fish}條魚')
break
fish += 1
if __name__ == '__main__':
main()
運行結果:
總共有3121條魚
案例二:
30 個人在一條船上,超載,需要 15 人下船。
于是人們排成一隊,排隊的位置即為他們的編號。
報數,從 1 開始,數到 9 的人下船。
如此循環,直到船上僅剩 15 人為止,問都有哪些編號的人下船了呢?
代碼如下:
people={}
for x in range(1,31):
people[x]=1
# print(people)
check=0
i=1
j=0
while i<=31:
if i == 31:
i=1
elif j == 15:
break
else:
if people[i] == 0:
i+=1
continue
else:
check+=1
if check == 9:
people[i]=0
check = 0
print("{}號下船了".format(i))
j+=1
else:
i+=1
continue
運行結果:
9號下船了
18號下船了
27號下船了
6號下船了
16號下船了
26號下船了
7號下船了
19號下船了
30號下船了
12號下船了
24號下船了
8號下船了
22號下船了
5號下船了
23號下船了