题解:P3951 [NOIP2017 提高组] 小凯的疑惑 / [蓝桥杯 2013 省] 买不到的数目

坏了,调了好久,结果发现不能输出 '\n'

思路

或许各位都想复杂了?

假设两种钱每种都不能不拿,设不能凑成的最小钱数为 $c$。

因为在 $a$ 和 $b$ 是互质的情况下,只有两种选择:$a$ 拿 $b$ 个或 $b$ 拿 $a$ 个(因为拿多就得找零了,题目要求不能找零),所以 $c$ 就是 $a \times b$(跟求最小公倍数差不多)。

由于 $a$ 和 $b$ 可以什么都不拿,所以答案就是 $c - a - b = a \times b - a - b$(也就是要再减掉 $a$ 和 $b$)。

代码

#include <bits/stdc++.h>
long long a, b;
int main()
{
    cin >> a >> b;
    cout << a * b - a - b; // 注意:输出 '\n' 会导致你得到 0 分。
    return 0;
}