百元买鸡
题目:
- 我国古代数学家张丘建在《算经》一书中提出了一个数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?请设计程序解答上述问题。
思路:
每个类型都定义一个变量,找出变量范围,通过变量之间的联系计算求解
变量范围
- i:[0,100]
- j:[0,100]
- k:[0,100]
必须同时满足:
- 百钱:
5*i+3*j+k/3 == 100
- 百只:
i+j+k == 100
- 防止鸡雏出现小数问题
k%3==0
代码:
1 | public class JavaDemo01 { |
优化
缩短一下循环的范围
变量范围
- i:[0,20] 一只5元 最多可以买 20*5 = 100
- j:[0,33] 一只3元 最多可以买 3*33 = 99
- k:[0,100] 一只 1/3元 最多可以买 300 ,但题目限制100只 , 所以最多100
既然到这里了,我们还可以再优化一下缩短到2层循环
我们总共需要买100只鸡,只需要知道两个就能得出另一个卖多少只
那么 k = 100 - i - j
那么还可以把条件满足改成
- 百钱:
5*i+3*j+k/3 == 100
- 隐藏条件: k%3==0
不需要百只鸡了
代码
1 | public class JavaDemo01 { |
- 标题: 百元买鸡
- 作者: sudo0m
- 创建于 : 2024-10-02 14:20:02
- 更新于 : 2024-10-02 14:50:16
- 链接: https://sudo0m.tech/page/20241002142002/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。