100 元買 100 隻雞,公雞 5 元/隻,母雞 3 元/隻,小雞 1 元/3 隻 (即 1/3 元/隻)。求所有整數解。
注:原帖價格描述有誤 (雞蛋/鴨蛋/鵝蛋),此處按經典「百錢百雞」修正。
x + y + z = 100 // 總數
5x + 3y + z/3 = 100 // 總價 (z 必須是 3 的倍數)
=> 15x + 9y + z = 300
=> 14x + 8y = 200 // 消去 z
=> 7x + 4y = 100
public class HundredChickens {
public static void main(String[] args) {
for (int x = 0; x <= 100; x++) { // 公雞 0-20
// 7x + 4y = 100 => y = (100 - 7x) / 4
int remainder = 100 - 7 * x;
if (remainder < 0) break;
if (remainder % 4 == 0) {
int y = remainder / 4;
int z = 100 - x - y;
if (z >= 0 && z % 3 == 0) {
System.out.printf("公雞:%d 母雞:%d 小雞:%d%n", x, y, z);
}
}
}
}
}
公雞:0 母雞:25 小雞:75
公雞:4 母雞:18 小雞:78
公雞:8 母雞:11 小雞:81
公雞:12 母雞:4 小雞:84
// 原代碼錯誤:價格單位不統一、循環上界錯誤、小雞價格計算錯誤
// 修正版 (按原帖 1毛/3元/6元 即 0.1/3/6 元):
for (int cock = 0; cock <= 100; cock++) {
for (int hen = 0; hen <= 100 - cock; hen++) {
int chick = 100 - cock - hen;
double cost = cock * 0.1 + hen * 3 + chick / 3.0; // 注意除法
if (Math.abs(cost - 100) < 1e-9) {
System.out.println(cock + " " + hen + " " + chick);
}
}
}