import java.util.Scanner; /** * @author hll[yellowdradra@foxmail.com] * @since 2023-03-22 23:17 **/ public class Main { private static final int COCK_PRICE = 5; private static final int HEN_PRICE = 3; private static final double CHICK_PRICE = 1.0f / 3; private static final int MONEY = 100; private static final int COUNT = 100; public static void main(String[] args) { Scanner in = new Scanner(System.in); in.nextInt(); // 最多能买 MONEY / COCK_PRICE = 100 / 5 = 20 只公鸡 for (int i = 0; i <= MONEY / COCK_PRICE; i++) { // 最多能买 COUNT - i 只母鸡 (题目数量要求) 最多能花 MONEY - i * COCK_PRICE 元 (题目钱数要求) for (int j = 0; j < COUNT - i && j * HEN_PRICE <= MONEY - i * COCK_PRICE ; j++) { // 剩下的 COUNT - i - j 只小鸡 如果能把剩下的钱 MONEY - i * COCK_PRICE - j * HEN_PRICE 花完 则这是一种可行的购买方式 // 因为小鸡的价格是 浮点数 所以我们需要判断绝对误差 当其小于百万分之一时 就可以认为 两个值是相等的 if (Math.abs(MONEY - (COUNT - i - j) * CHICK_PRICE - i * COCK_PRICE - j * HEN_PRICE) < 1E-6) { System.out.printf("%s %s %s\n", i, j, COUNT - i - j); } } } } }