python_百文买百鸡问题

百文买百鸡问题

        -- 不定方程

       -- 公鸡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))

  

  

原文地址:https://www.cnblogs.com/2bjiujiu/p/6684696.html