1 条题解

  • 0
    @ 2025-10-23 18:22:58

    思路分析

    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
    上传者