题解 | #百钱买百鸡问题#
百钱买百鸡问题
https://www.nowcoder.com/practice/74c493f094304ea2bda37d0dc40dc85b
先分享一下想都不用想的暴力循环方法,最后再附上看到其他答主相对来说比较精细的算法,完整代码如下:
//算法1--暴力算法
while(parseInt(readline())) {
let arr = [5, 3, 1/3];
let res = [];
for (let i = 0; i <= 100; i++) {
for (let j = 0; j <= 100; j++) {
for (let k = 0; k <= 100; k++) {
if (i+j+k == 100 && 5*i + 3*j + 1/3*k == 100) {
res.push([i, j, k]);
}
}
}
}
res.forEach(x => console.log(x.join(' ')));
}
//算法2--精细算法
/*
let temp = readline()
if (typeof parseInt(temp) === 'number') {
count()
}
function count() {
// 公式推到:
// 公鸡个数 cock,母鸡个数 hen,雏鸡个数 chicks = 100 - cock - hen
// 5*cock + 3 * hen + (100 - cock - hen)/3 = 100 元
// 推出:hen = 25 - 7 * cock / 4
// 因为 hen >= 0 , 25 - 7 * cock / 4 >= 0 推出
// 0 <= cock <= 15
// 因为 hen 是正整数,所以,cock 是4的倍数,所以cock 的取值为:0 4 8 12
// 总结:
// 1. 公鸡的个数可能: [0, 4, 8, 12]
let cockArr = [0, 4, 8, 12]
cockArr.map(cock => {
// 2. 母鸡、雏鸡与公鸡个数的关系
let hen = 25 - 7*cock/4
let chicks = 100 - cock - hen
console.log(cock , hen , chicks)
})
}
*/