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

  

  

上一篇:viewport移动端的meta


下一篇:php 全角半角转换