python求百钱买百鸡问题_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))

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值