小凯的疑惑

本人的第二篇博客,嗷嗷嗷!二话不说,来挑战下!

神奇传送门

神奇的思路:

首先看到这道题,我真的无从下手。只能想到暴力枚举。然后。。。(不堪回首的往日啊)就没有然后了。手推几个数据点,很容易发现每个答案都小于两个质数的积,然后试了下a*b-a-b,。。。成功了所以代码如下。

神奇的题解

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    long long a,b;
    cin>>a>>b;
    cout<<a*b-a-b;
    return 0;
}

 

解释

问了某个大佬,他告诉我题目可转换为:设a,b,c是正整数,求c0的最小值能够让任意的c>c0,方程ax+by=c有负整数解;

解出来就是c0的最小值=ab-a-b.

证明

 

 因为a,b互质。可将原方程转化为a(x0+bt)+b(y0-at)=c,t为系数,方程仍然成立。考虑x的范围,首先x>=0,其次若x=0时,c0就可以无限大。x=b时,a与y可以合并,同样c0无限大。倘若x>b,可以从x中拆个b同样转化成a,y合并

再加上一个数,c0同样可以取到无限大。所以x的取值范围为:0——b-1。所以by=c-ax>ab-a-b-ax>=ab-a-b-a(b-1)=-b,所以y>=-1。于是问题就简化到证明:c>ab-a-b都可以,而c=ab-a-b不可以。当c=ab-a-b时,ax+by=ab-

a-b => ab=a(x+1)+b(y+1).因为a与b互质,a|(y+1),b|(x+1).所以a<=y+1,b<=x+1.

所以ab=a(x+1)+b(y+1)>=ab+a=2ab<=0,

方程无解,矛盾。所以c!=ab-a-b。证毕!

 

完结撒花!!!

学好数学很重要

不开long long 毁一生!!!

完结撒花!!!