andyli

题解 CF1214A 【Optimal Currency Exchange】
答案需要我们计算最小的卢布数,换句话说,我们需要最大化美元和欧元的总金额,而在如果已知其中任意一种的相应货币钱数,...
扫描右侧二维码阅读全文
06
2019/09

题解 CF1214A 【Optimal Currency Exchange】

答案需要我们计算最小的卢布数,换句话说,我们需要最大化美元和欧元的总金额,而在如果已知其中任意一种的相应货币钱数,即可算出在总答案最大的情况下另外一种货币的钱数。所以我们可以枚举美元换取的钱数,同时算出相应的欧元钱数,选取总金额最大的方案即为答案。注意只能换取$5$的倍数的欧元,所以实际能换取的欧元钱数为剩余可换取欧元的钱数与它之差绝对值最小且不大于它的数。
主程序代码如下:

int main()
{
    int n, d, e;
    read(n, d, e); // 输入数据
    int x = n / d, ans = 0; // x为最大能换取的美元数量
    for (int i = 0; i <= x; i++) // 换取i美元
        ans = max(ans, i * d + (n - i * d) / e / 5 * 5 * e); // (n - i * d) / e 为剩余可换取欧元的钱数, /5*5的操作是为了计算实际能换取的欧元钱数
    writeln(n - ans); // 输出答案
    return 0;
}
Last modification:November 23rd, 2019 at 11:30 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment