【NOIP2017】小凯的疑惑

2021年09月15日 阅读数:1
这篇文章主要向大家介绍【NOIP2017】小凯的疑惑,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

本题在洛谷上的连接:https://www.luogu.org/problemnew/show/P3951#subios


 

简化一下问题,就是对于ax+by=c,求一个最大的c,使得方程不存在非负整数解。ide

咱们设有一组特解(x0,y0),那么根据此类直线方程的性质,则通解可表示为(x0-kb,y0+ka)。url

显然,存在一组特解(x1,y1),使得0<=x1<=b-1,咱们试图研究那些不存在非负整数解的状况,因此设y1<=-1。spa

此时,c=ax1+by1<=a(b-1)+b(-1)=ab-a-b,说明全部无非负整数解状况的c必然不超过ab-a-b,但咱们还须要证实当c=ab-a-b时无非负整数解。.net

直接用反证法便可。设c=ab-a-b时有非负整数解,则ax+by=ab-a-b,a(x+1)+b(y+1)=ab。code

由于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时无非负整数解。blog

 

 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 }
AC代码