NOIP201208同余方程
NOIP201208同余方程
描述
求关于x的同余方程ax ≡ 1 (mod b)的最小正整数解。
提示
对于40%的数据,2 ≤b≤ 1,000;
对于60%的数据,2 ≤b≤ 50,000,000;
对于100%的数据,2 ≤a, b≤ 2,000,000,000。
二话不说,用扩展欧几里得算法吧,除非想时间超限~~~
1 #include<iostream> 2 using namespace std; 3 long long a,b,x,y; 4 long long gcd(long long a,long long b,long long &x,long long &y) 5 { 6 if (b==0) 7 { 8 x=1; 9 y=0; 10 return a; 11 } 12 else 13 { 14 long long ans=gcd(b,a%b,x,y); 15 long long t=x; x=y; y=t-(a/b)*y; 16 return ans; 17 } 18 } 19 int main() 20 { 21 cin>>a>>b; 22 long long ans=gcd(a,b,x,y); 23 x=x%b; 24 while(x<0)x+=b; 25 cout<<x<<endl; 26 return 0; 27 }
你——悟到了么?