百钱百鸡问题。我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁-值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
分析:
假设用cock、hen、chicken分别代表鸡翁、鸡母和鸡雏个数, 则cock. hen、chicken满 则公鸡。鸡、满
足联合方程组: 足联合方程组:
cock +hen+chick =10 公鸡+母鸡+小鸡=10(1)
5*cock +3*hen+chic/3=100(2) 多33个(有限数)
由(2)式知,鸡翁公鸡至多20个(有限数),鸡母至多33个(有限数),,因此运用穷举法,令cock分别为1,2,3,..,20,hen分别为1,2,3,...,33 然后chick=100-cock-hen 代入到(2)中验证,如果两边相等,所得的cook、hen和chick值就是所要鸡翁,鸡母和鸡雏的个数;如果不存在满足(2)式的cook、hen和chick,则本题无解。
代码如下:
for cock in range(1,20,1):
for hen in range(1,33,1):
chick= 100-cock-hen
if(5*cock+3 *hen+chick/3== 100):
print("cock:%d"%cock, "hen:%d"%hen, "chick:%d"%chick)
运行结果:
cock:4 hen:1 8 chick:78
cock:8 hen:11 chick:81
cock:12 hen:4 chick:84
这里运用穷举法,外层for循环遍历所有可能的cock数目,内层for循环遍历所有的hen数目,循环体中两句代码分别对应方程式(1)和(2),如果满足方程组,则把cock.hen.chick的数目打印出来。