百钱买百鸡问题


实现代码:
方法一:暴力枚举法
public static void main(String[] args) {// 公鸡最多 100/5 = 20 只for (int x = 0; x <= 20; x++) {// 母鸡最多 100/3 ≈ 33 只for (int y = 0; y <= 33; y++) {int z = 100 - x - y;if (z % 3 == 0 && 5 * x + 3 * y + z / 3 == 100) {System.out.println(x + " " + y + " " + z);}}}}方法二:减少循环次数(数学优化)
public static void main(String[] args) {// 根据方程推导:7x + 4y = 100for (int x = 0; x <= 14; x++) { // 7x <= 100 => x <= 14if ((100 - 7 * x) % 4 == 0) {int y = (100 - 7 * x) / 4;int z = 100 - x - y;if (y >= 0 && z >= 0 && z % 3 == 0) {System.out.println(x + " " + y + " " + z);}}}}