python求一百元买鸡_经典算法百元买百鸡

一百个铜钱买了一百只鸡,其中母鸡一只5钱、公鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少)。

这是一个古典数学问题,设一百只鸡中公鸡、母鸡、小鸡分别为x,y,z,问题化为三元一次方程组:

这里x,y,z为正整数,且z是3的倍数;由于鸡和钱的总数都是100,可以确定x,y,z的取值范围:

1) x的取值范围为1~20

2) y的取值范围为1~33

3) z的取值范围为3~99,步长为3

对于这个问题我们可以用穷举的方法,遍历x,y,z的所有可能组合,最后得到问题的解。当然也可以简化算法去完成这个问题。

for (var i = 0; i <= 20; i++) {//母鸡

for (var j = 0; j <= 33; j++) {//公鸡

var m = (100 - j - i);剩下的就是小鸡

if (i * 5 + j * 3 + m * (1 / 3) == 100 && i * j * m > 0) {//判断总金额为100,每一种都不能为0

console.log(i, j, m);

}

}

}

另一种写法

for (var i = 0; i < 20; i++) {//母鸡最多能买20只

for (var j = 0; j < 33; j++) {//公鸡最多能买33只

for (var m = 0; m <= 300; m++) {小鸡最多能买300只

if (i * 5 + j * 3 + m * (1 / 3) == 100 && i * j * m != 0 && i + j + m == 100) {//判断总金额为100,每一种都不能为0

console.log(i, j, m)

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值