python 百錢買百雞

百錢買百雞

我國古代數學家張丘建在《算經》一書中曾提出過著名的“百錢買百雞”問題,該問題敘述如下:雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一;百錢買百雞,則翁、母、雛各幾何?

翻譯過來,意思是公雞一個五塊錢,母雞一個三塊錢,小雞三個一塊錢,現在要用一百塊錢買一百隻雞,問公雞、母雞、小雞各多少隻?

分析
 1. 設:公雞x只,母雞y只,小雞3只爲z。
 2. 100 = 5x+3y+z  #100元買的雞的數量
 3. 100 = x+y+3z  #100只雞
 4. z/3 == 0 #z能夠被3整除
 5. x,y,z/3均大於零小於100

只有符合以上條件纔可以滿足。

代碼如下:
#百錢買百雞 (在裏面z表示一隻小雞)
for x in range(100):
      for y in range(100):
            for z in range(100):  #x,y,z分別進行循環
                  if (5*x+3*y+z/3) == 100 and z%3 == 0 and x+y+z == 100:
                        print("公雞%d,母雞%d,小雞%d"%(x,y,z))
                  
#結果代碼
公雞0,母雞25,小雞75
公雞4,母雞18,小雞78
公雞8,母雞11,小雞81
公雞12,母雞4,小雞84
以上使用的函數及語句
for 語句  基本的循環語句
if  語句  基本判定語句
and  且
range()   函數 生成
以下爲C語言的代碼大家可以用於對比
#include <stdio.h>

int main()
{
    int i, j, k;

    printf("百元買百雞的問題所有可能的解如下:\n");

    for( i=0; i <= 100; i++ )
        for( j=0; j <= 100; j++ )
            for( k=0; k <= 100; k++ )
            {
                if( 5*i+3*j+k/3==100 && k%3==0 && i+j+k==100 )
                {
                    printf("公雞 %2d 只,母雞 %2d 只,小雞 %2d 只\n", i, j, k);
                }
            }

    return 0;
}
// 運行結果:
百元買百雞的問題所有可能的解如下:
公雞  0 只,母雞 25 只,小雞 75 只
公雞  4 只,母雞 18 只,小雞 78 只
公雞  8 只,母雞 11 只,小雞 81 只
公雞 12 只,母雞  4 只,小雞 84

新手小白如有問題及時留言,好好探討,感謝大家的支持!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章