逆元模板
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了逆元模板相关的知识,希望对你有一定的参考价值。
1 /**************************************** 2 A/B(hdu 1576) 3 求逆元模板(求(1/b)%p的值,p位素数) 4 5 令(1/b)%p=x (x为结果) 6 1/b=x+k*p (k未知) 7 1=x*b+k*p*b (左右同时模p) 8 1=x*b%p (1%p=1;k*p*b%p=0) 9 1+y*p=x*b 10 1=x*b-y*p; 11 用扩展欧几里得就可求出x的值了 12 13 *****************************************/ 14 15 #include<iostream> 16 using namespace std; 17 int p=9973; 18 19 ///扩展欧几里得算法模板 20 int extendGcd(int a,int b,int &x,int &y) 21 { 22 if (b==0) 23 { 24 x=1; 25 y=0; 26 return a; 27 } 28 int d= extendGcd(b,a%b,y,x); 29 y-=a/b*x; 30 return d; 31 } 32 33 ///逆元模板 34 int mod_reverse(int b,int p) 35 { 36 int x,y; 37 int d = extendGcd(b,p,x,y); 38 return x; 39 } 40 41 int main() 42 { 43 int a,b,t; 44 cin>>t; 45 while (t--) 46 { 47 cin>>a>>b; 48 int x=mod_reverse(b,p); 49 x=(x%p+p)%p; 50 int ans=a*x%p; 51 cout<<ans<<endl; 52 } 53 }
以上是关于逆元模板的主要内容,如果未能解决你的问题,请参考以下文章