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

新手小白如有问题及时留言,好好探讨,感谢大家的支持!

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