题目详见:【P3951】小凯的疑惑
首先说明:此题为一道提高组的题。但其实代码并没有提高组的水平。主要考的是我们的推断能力,以及看到题后的分析能力。
分析如下:
证明当k>ab-a-b时,小凯可以准确支付这个物品。
显然,可以列出一个不定方程ma+nb=k,(m n,为未知数)由于m,n是金币个数,所以m>-1,n>-1,
这个不定方程的通解为m=m0+bt,n=n0-at,(仅仅为写法的一种,不过这样写最方便,m0,n0为方程的一组解),
m0+bt>-1,n0-at>-1,化简后有-(m0+1)/b<t<(n0+1)/a,
显然(n0+1)/a-(-(m0+1)/b)=(n0+1)/a+(m0+1)/b=(bn0+b+a+am0)/ab,
又因为bn0+am0=k.所以原式等于(k+a+b)/ab,显然k+a+b>ab,所以原式大于1,所以区间(-(m0+1)/b,(n0+1)/a,)中必有一个整数,t一定存在,所以命题成立。
又可证明当k=ab-a-b时小凯无法支付(大家可以去参考题解,我就不啰嗦了),
所以ab-a-b就是不找零的情况下,小凯用手中的金币不能准确支付的最贵的物品的价值。 ——摘自luogu
#include<iostream>
using namespace std;
int main()
{
long long a,b;
cin>>a>>b;
cout<<a*b-a-b;
return ;
}