歐幾裏得,擴展歐幾裏得(模板)
阿新 • • 發佈:2018-10-01
blank space string ref 返回 color quest ostream include
1 int gcd(int a,int b) 2 { 3 return b?gcd(b,a%b):a;//最後返回的a為最大公約數 4 }
擴展歐幾裏得求逆元:51nod1256
1 #include <iostream> 2 #include <stdio.h> 3 #include <string.h> 4 using namespace std; 5 int d,x,y; 6 //ax+by=1(x為a的逆元,同理y為b的逆元) 7 void Exgcd(int a,int b,int &x,int &y)8 { 9 if(!b) {d=a; x=1; y=0;} 10 else 11 { 12 Exgcd(b,a%b,x,y); 13 int tmp=x; 14 x=y; 15 y=tmp-(a/b)*y; 16 } 17 } 18 int main() 19 { 20 int a,b; 21 cin>>a>>b; 22 23 Exgcd(a,b,x,y); 24 if(d==1) 25 { 26 int ans=(x%b+b)%b;27 cout<<ans<<endl; 28 } 29 else cout<<"-1"<<endl; 30 31 return 0; 32 }
完。
歐幾裏得,擴展歐幾裏得(模板)