题解: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;
}