百钱买百鸡
我国古代数学家张丘建在《算经》一书中曾提出过著名的“百钱买百鸡”问题,该问题叙述如下:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,则翁、母、雏各几何?
翻译过来,意思是公鸡一个五块钱,母鸡一个三块钱,小鸡三个一块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?
分析:
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 只
新手小白如有问题及时留言,好好探讨,感谢大家的支持!