【codevs 1200】【NOIP 2012】同余方程 拓展欧几里德求乘法逆元模板题
模板,,,
#include<cstdio> using namespace std; void exgcd(long long a,long long b,long long &x,long long &y){ if (b==0) {x=1; y=0;} else {exgcd(b,a%b,x,y); int t=y; y=x-a/b*y; x=t;} } int main(){ long long a,b,x,y; scanf("%lld %lld\n",&a,&b); exgcd(a,b,x,y); printf("%lld\n",(x+b)%b); return 0; }
白书上的更简短的模板:
void gcd(LL a,LL b,LL &d,LL &x,LL &y){ if (!b){ d=a; x=1; y=0; }else{ gcd(b,a%b,d,y,x); y-=x*(a/b); } }
NOI 2017 Bless All