标签:idt 拓展 要求 return turn 部分 width 求逆 oid
同余问题是数论问题中很重要的一部分
int gcd(int a,int b){ if(!b) return a; return gcd(b,a%b); }
void exgcd(int a,int b,int x,int y,int &gcd){ if(!b){ x=1;y=0;gcd=a; return; }
int t=y; exgcd(b,a%b,x,y,gcd); y=(b-a/b*b)*x; x=t; }
如果 a*b%p==1 那么a与b互为模p意义下的逆元,那么逆元的作用是什么呢?
n/a%p==n*b%p(可以自行理解)
a*b%p==1 => a*b+k*p==1(用拓展欧几里得可以轻易得到答案)
void exgcd(int a,int b,int x,int y,int &gcd){ if(!b){ x=1;y=0;gcd=a; return; } exgcd(b,a%b,x,y,gcd); int t=y; y=(b-a/b*b)*x; x=t; } int getinv(int a,int p){ exgcd(a,p,x,y,gcd); if(gcd!=1) return -1; return (x%p+p)%p }
中国剩余定理是要求一个满足上述等式的最小值
对于等式一,假设已有 t%m1==a1,如果想要满足所有的等式,则需要 x%m2==0,x%m3==0......
标签:idt 拓展 要求 return turn 部分 width 求逆 oid
原文地址:https://www.cnblogs.com/yulinss/p/11700842.html