NOIP2012同余方程
通过这道题略懂了扩展gcd和逆元
形如ax=1(mod b)的同余方程中x的最小正整数解叫做a模b的逆元
逆元定义大概就是一个运算取消
扩展gcd可以求解形如ax+by=gcd(a,b)的二元方程
题目中的ax=1(mod b)即可化作ax+by=1,原题中的保证有解意思就是ab互质
代码:
#include<bits/stdc++.h> using namespace std; #define ll long long //求ax+by=gcd(a,b)的解 void exgcd(int a,int b,int &x,int &y){ if(b==0){x=1;y=0;return;} exgcd(b,a%b,x,y); int t=x;x=y;y=t-a/b*y; } int main(){ ll a,b; scanf("%lld%lld",&a,&b); int x,y; exgcd(a,b,x,y); cout<<x<<" "<<y<<endl; x=(x%b+b)%b; printf("%d\n",x); }
关于逆元的知识还很多。。数学方面的知识基本还是空白。。
最大连续子区间和我还真忘了怎么敲。。。