luogu P1001 a+b problem题解(恶搞向)
前言
众所周知,洛谷a+b problem是一道被玩坏了的新人练手题,但题解里全是图论和数据结构的恶搞题解,在此作为一个资深数论党,我必须高呼:数论yyds!
思路
这个题保证一定是int型范围的,我们就可以想到,此题就是在膜INT_MAX的意义下求和a+b同余的最小整数解。
正确性证明
我们数论的特点是光有思路还不够,还需要有证明,在此,需要的前置知识是裴蜀定理,请看我的那篇博客
由裴蜀定理可得ax+by=c有解当且仅当gcd(a,b)|c,因为这里的a的值是1,而1和任何数的最大公因数都是1,而任何数都能整除1,所以gcd(a,b)|c
代码实现
点击查看代码
#include<iostream>
#include<climits>
using namespace std;
const int MOD=INT_MAX;
void exgcd(int a,int b,int &x,int &y)
{
if(!b)
{
x=1;
y=0;
return;
}
exgcd(b,a%b,x,y);
int tx=x;
x=y;
y=tx-a/b*y;
}
int main()
{
int a,b;
cin>>a>>b;
int c,d;
exgcd(1,0,c,d);
cout<<c*(a+b)<<endl;
return 0;
}

浙公网安备 33010602011771号