1 条题解
-
0
思路分析
1. 任务拆解:
- 读取总金额n、面包单价x、蛋挞单价y
- 找到所有花光n元的购买方案(至少买1件面包和1件蛋挞)
- 从这些方案中找到面包数量最多的方案
2. 关键点分析:
- 面包数量越多,总方案数越少,所以从最大可能的面包数量开始枚举
- 最大面包数量 = n/x(向下取整)
- 对于每个面包数量i,检查剩余金额是否能被y整除且至少能买1件蛋挞
- 找到第一个满足条件的方案就是面包最多的方案
3. 步骤规划:
- 读取n, x, y的值
- 从最大可能的面包数量n/x开始递减枚举
- 计算买i件面包后的剩余金额
- 检查剩余金额是否能整除y且至少能买1件蛋挞
- 找到第一个满足条件的方案就输出并结束
4. 代码对应:
int n,x,y;cin>>n>>x>>y;→ 读取输入数据for(int i=n/x;i>=1;i--)→ 从最大面包数量开始递减枚举int d=n-i*x;→ 计算买i件面包后的剩余金额if(d>=y && d%y==0)→ 检查剩余金额能买整数件蛋挞且至少1件cout<<i<<" "<<(n-i*x)/y;→ 输出面包和蛋挞的数量break;→ 找到第一个方案就结束(因为是从大到小枚举)
- 1
信息
- ID
- 223
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 4
- 标签
- (无)
- 递交数
- 560
- 已通过
- 242
- 上传者