酷代码 AI
菜单
服务商

题目描述 一个炊事员上街采购,用n元钱买了m只鸡,其中: 母鸡一只15元; 公鸡一只10元; 小鸡一只5元; 正好把钱买完,问母鸡a、公鸡b、小鸡c各买多少只?每种鸡最少买一只 输入 读入两个整数分别为: _ 输出 输出格式见样例 样例输入 复制 500 90 样例输出 复制 mu:1 gong:8 xiao:81 mu:2 gong:6 xiao:82 mu:3 gong:4 xiao:83 mu:4 gong:2 xiao:84 提示

我们来完整分析这道题。 --- ✅ 题目描述解析 炊事员用 `n` 元钱买了 `m` 只鸡,满足: - 母鸡 15 元/只 → 数量记为 `a` - 公鸡 10 元/只 → 数量记为 `b` - 小鸡 5 元/只 → 数量记为 `c` 要求: 1. 正好花完 `n` 元: $$ 15a + 10b + 5c = n $$ 2. 总共买 `m` 只鸡: $$ a + b + c = m $$ 3. 每种鸡至少买一只: $$ a \geq 1,\ b \geq 1,\ c \geq 1 $$ 输出所有满足条件的解,格式为: ``` mu:a gong:b xiao:c ``` 按 `a` 从小到大输出。 --- 🔢 样例输入 ``` 500 90 ``` 即:总钱数 `n = 500`,总鸡数 `m = 90` --- 🧮 解题思路 我们有两个方程: 1. $ a + b + c = 90 $ 2. $ 15a + 10b + 5c = 500 $ 可以化简第二个方程(两边除以 5): $$ 3a + 2b + c = 100 $$ 现在联立: - (1) $ a + b + c = 90 $ - (2) $ 3a + 2b + c = 100 $ 用 (2) 减 (1): $$ (3a + 2b + c) - (a + b + c) = 100 - 90 \\ \Rightarrow 2a + b = 10 \Rightarrow b = 10 - 2a $$ 代入 (1) 求 `c`: $$ a + (10 - 2a) + c = 90 \\ \Rightarrow -a + 10 + c = 90 \\ \Rightarrow c = 80 + a $$ 现在得到通解: - $ b = 10 - 2a $ - $ c = 80 + a $ 约束条件: - $ a \geq 1 $ - $ b \geq 1 $ → $ 10 - 2a \geq 1 $ → $ a \leq 4.5 $ → $ a \leq 4 $ - $ c \geq 1 $ → 显然成立(因为 $ a \geq 1 $ → $ c \geq 81 $) 所以 $ a $ 的取值范围是: $$ a = 1, 2, 3, 4 $$ 逐一代入: | a | b=10-2a | c=80+a | |---|--------|--------| | 1 | 8 | 81 | | 2 | 6 | 82 | | 3 | 4 | 83 | | 4 | 2 | 84 | → 完全匹配样例输出! --- ✅ Python 代码实现 ```python n = int(input()) m = int(input()) found = False # 枚举母鸡数量 a for a in range(1, min(m, n // 15) + 1): # 计算公鸡数量 b 和小鸡数量 c b = 10 - 2 * a # 来自推导公式 if b < 1: continue c = m - a - b if c < 1: continue # 检查是否满足总价 total_cost = 15 * a + 10 * b + 5 * c if total_cost == n and a + b + c == m: print(f"mu:{a} gong:{b} xiao:{c}") found = True # 如果没有解,题目未要求输出什么,可不处理 ``` --- ⚠️ 注意:上面是基于 特定数学关系 推导出的逻辑。但更通用的做法是直接枚举 `a` 和 `b`,然后计算 `c`。 --- ✅ 通用代码(推荐) ```python n = int(input()) m = int(input()) for a in range(1, m): # 母鸡数 for b in range(1, m - a): # 公鸡数 c = m - a - b # 小鸡数 if c < 1: continue if 15*a + 10*b + 5*c == n: print(f"mu:{a} gong:{b} xiao:{c}") ``` 此方法无需依赖具体数值推导,适用于任意价格组合。 --- ✅ 输出结果(n=500, m=90) ``` mu:1 gong:8 xiao:81 mu:2 gong:6 xiao:82 mu:3 gong:4 xiao:83 mu:4 gong:2 xiao:84 ``` 完全符合样例。 --- 📌 - 使用双重循环枚举 `a` 和 `b`,由 `c = m - a - b` 得到 - 检查总价是否等于 `n` - 确保每种鸡 ≥1 - 按 `a` 升序自然输出 ✅ 此代码简洁、正确、易理解,适合提交评测系统。 [2026-01-08 12:08:06 | AI问答 | 1319点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多