公雞5文錢一隻,母雞3文錢一隻,小雞3只一文錢,用100文錢買100只雞,該怎樣買?
首先看一下用數學方法的解題過程:
我們可以列出關鍵的方程式
x + y + z = 100
5x + 3y + z/3 =100
接下來我們看一下怎麼樣能讓這個問題程序化:
理一下思路,我們先從買1只公雞開始,然後買1只母雞,剩下錢全部買小雞,看滿不滿足100只雞,不滿足的話,那就執行下一步,買1只公雞,然後買2只母雞,剩下錢全部買小雞,看滿不滿足100只雞,不滿足的話,母雞數再加1,直到33,但是買了一隻公雞的情況下不可能買到33只母雞,也不可能買到20只公雞,然後公雞數目加1,再從1只母雞買起,剩下錢買小雞,依次循環下去,會發現一個有趣的問題,公雞數目加1,母雞就必須從1加到33,那就說明要用到兩層循環,還要進行條件判斷,判斷錢是不是正好加起來等於100文,不就解決了這個問題了。
for x in range(1, 20): # 從1開始買公雞,不包括20
for y in range(1, 33): # 從1開始買母雞,不包括33
z = 100 - x - y # 計算剩餘要買多少個小雞,小雞的個數要滿足3的倍數
if z%3 == 0 and 5*x+3*y+z//3 == 100: # 判斷買的計劃是否符合條件
print('公雞:{} 母雞:{} 小雞:{}'.format(x,y,z))
結果如下圖: