本题在洛谷上的链接:https://www.luogu.org/problemnew/show/P3951#sub
简化一下问题,就是对于ax+by=c,求一个最大的c,使得方程不存在非负整数解。
我们设有一组特解(x0,y0),那么根据此类直线方程的性质,则通解可表示为(x0-kb,y0+ka)。
显然,存在一组特解(x1,y1),使得0<=x1<=b-1,我们试图研究那些不存在非负整数解的情况,所以设y1<=-1。
此时,c=ax1+by1<=a(b-1)+b(-1)=ab-a-b,说明所有无非负整数解情况的c必然不超过ab-a-b,但我们还需要证明当c=ab-a-b时无非负整数解。
直接用反证法即可。设c=ab-a-b时有非负整数解,则ax+by=ab-a-b,a(x+1)+b(y+1)=ab。
因为a,b互质,所以有a|y+1,b|x+1,故y+1>=a,x+1>=b,则a(x+1)+b(y+1)>=2ab,显然矛盾,故当c=ab-a-b时无非负整数解。
1 #include <iostream> 2 3 using namespace std; 4 5 typedef long long ll; 6 7 int main() { 8 ll a, b; 9 cin >> a >> b; 10 cout << a * b - a - b; 11 return 0; 12 }