问题描述
题目要求计算小M剩下的奶酪量,已知:
- 小M原本有 111 公斤奶酪。
- 小F偷走了 \frac{A}{B} 公斤奶酪。
- 剩余的奶酪量以分数形式表示,且分母保持为 B。
思路分析
-
数学公式
- 小M剩余奶酪为 1−AB1 - \frac{A}{B}1−BA: 剩余奶酪量=BB−AB=B−AB\text{剩余奶酪量} = \frac{B}{B} - \frac{A}{B} = \frac{B - A}{B}剩余奶酪量=BB−BA=BB−A
-
结果格式
- 剩余奶酪的分子为 B−AB - AB−A,分母为 BBB。
- 输出格式为
"{分子}/{分母}"。
-
边界情况
- 0≤A≤B0 \leq A \leq B0≤A≤B:小F偷走的奶酪量不会超过 1 公斤,保证计算结果正确。
- A=0A = 0A=0:小F没偷,输出
1/B。 - A=BA = BA=B:小F偷光,输出
0/B。
图解流程
-
输入处理:
- 输入偷走的分子 AAA 和分母 BBB。
-
计算剩余奶酪的分子部分:
- 分子=B−A\text{分子} = B - A分子=B−A。
-
输出分数格式:
- 结果="分子/分母"\text{结果} = \text{"分子/分母"}结果="分子/分母"。
优化代码实现
python
复制代码
def solution(A: int, B: int) -> str:
# 计算剩余奶酪量的分子部分
remaining_numerator = B - A
# 格式化输出结果
result = f"{remaining_numerator}/{B}"
return result
if __name__ == '__main__':
# 测试用例
print(solution(2, 7) == "5/7") # 小F偷了 2/7 公斤,还剩 5/7 公斤
print(solution(1, 3) == "2/3") # 小F偷了 1/3 公斤,还剩 2/3 公斤
print(solution(3, 5) == "2/5") # 小F偷了 3/5 公斤,还剩 2/5 公斤
知识总结
-
分数的处理
- 分数的减法运算可统一分母: p1q−p2q=p1−p2q\frac{p_1}{q} - \frac{p_2}{q} = \frac{p_1 - p_2}{q}qp1−qp2=qp1−p2
- 结果分子直接通过简单减法计算。
-
字符串格式化
- 使用 Python 的
f-string格式化字符串:f"{分子}/{分母}"。
- 使用 Python 的
-
边界处理
- A=0A = 0A=0 时,直接输出
B/B。 - A=BA = BA=B 时,直接输出
0/B。
- A=0A = 0A=0 时,直接输出
学习计划
-
数学运算题型
- 刷题时关注分数运算、约分、同分母运算等基本技巧。
- 每周练习至少 5 道与分数运算相关的题目,强化理解。
-
边界条件处理
- 注意分析边界情况,如偷光、未偷等特殊输入。
-
代码优化
- 学习字符串格式化的各种方式,如
f-string、format等。
- 学习字符串格式化的各种方式,如
工具运用
-
利用 AI 提供代码建议
- 如果实现过程中遇到错误或效率低下的代码,可以通过 豆包MarsCode AI 检查代码逻辑并优化。
-
与学习资源结合
- 使用在线分数计算工具辅助验证答案。
- 结合数学基础知识,学习分数运算的规则和应用场景。
-
练习建议
- 对新手来说,先从简单的分数运算题目入手,逐步加深到涉及分数约分或复杂公式的题目。
- 在解决类似问题时,积累边界条件的处理经验,提升代码的鲁棒性。