百钱买百鸡

公鸡 5 文钱一只,母鸡 3 文钱一只,小鸡 1 文钱三只,用 100 文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足 100 文钱?

枚举

  • 循环

x 为公鸡只数,y 为母鸡只数,z 为小鸡只数。

1
2
3
4
5
6
7
8
for (let x = 0; x <= 20; x++) {
for (let y = 0; y <= 33; y++) {
let z = 100 - x - y
if (5 * x + 3 * y + z / 3 == 100) {
console.log(`公鸡数量:${x},母鸡数量:${y},小鸡数量:${z}`)
}
}
}

代数法

x+y+z=100
5x+3y+1/3z=100
②×3 得 ③ 15x+9y+z=300
③-① 得 ④ 14x+8y=2007x+4y=100y=25-7/4x
⑤ 由于 y=25-7/4x > 0,令 x=4ky=25-7kz=75+3k

因为 0<x,y,z<100, 满足条件的 k 取值为 0,1,2,3,当 k=4 时,x=16,y=25-28=-3 为负数,所以 k 最大取值为 3

1
2
3
4
5
6
7
8
9
10
let x
let y
let z

for (let k = 0; k <= 3; k++) {
x = 4 * k
y = 25 - 7 * k
z = 75 + 3 * k
console.log(`公鸡数量:${x},母鸡数量:${y},小鸡数量:${z}`)
}

又或者 y=25-7/4x > 0,得 x < 15,道理一样。

1
2
3
4
5
6
7
for (let x = 1; x < 15; x++) {
let y = (100 - 7 * x) / 4
let z = 100 - x - y
if ((100 - 7 * x) % 4 === 0) {
console.log(`公鸡数量:${x},母鸡数量:${y},小鸡数量:${z}`)
}
}