百文买百鸡问题
-- 不定方程
-- 公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买100只鸡,如何买?
-- 列出方程式
x + y + z = 100
5x + 3y + z/3 =100
如何用计算机来算?
-- 计算机并不会消元法,但是计算机会拼,把数一个个代入进去,然后再计算,满足条件输个结果
-- 如何逻辑整理?
全买公鸡最多 20 只
全买母鸡不可能,必须搭配小鸡买 33只母鸡和 3只小鸡
全买小鸡可以买300只
题目要求,鸡的个数正好是100只
-- 如何程序化?
-- 先从买1只公鸡开始,然后买1只母鸡,剩下钱全部买小鸡,看满不满足100只鸡,
不满足的话,那就执行下一步
-- 先从买1只公鸡开始,然后买2只母鸡,剩下钱全部买小鸡,看满不满足100只鸡
不满足的话,母鸡数在加1,直到33,但是买了一只公鸡的情况下,
不可能买到33只母鸡,也不可能买到20只公鸡
-- 然后公鸡数目加1,再从1只母鸡买起,剩下钱买小鸡,依次循环下去
会发现一个有趣的问题,公鸡数目加1,母鸡就必须从1加到33,那就说明要用到两层循环,
还要进行条件判断,判断钱是不是正好加起来等于100文,不就解决了这个问题了
程序化:
#!/usr/bin/python3 __author__ = 'beimenchuixue' __blog__ = 'http://www.cnblogs.com/2bjiujiu/' 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('公鸡:%s 母鸡:%s 小鸡:%s'%(x, y, z))