1265. [NOIP2012] 同余方程
1265. [NOIP2012] 同余方程
★☆ 输入文件:mod.in
输出文件:mod.out
简单对比
时间限制:1 s
内存限制:128 MB
【题目描述】
求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解。
【输入格式】
输入只有一行,包含两个正整数 a, b,用一个空格隔开。
【输出格式】
输出只有一行,包含一个正整数X0,即最小正整数解。输入数据保证一定有解。
【样例输入】
3 10
【样例输出】
7
【数据范围】
对于 40%的数据,2 ≤b≤ 1,000;
对于 60%的数据,2 ≤b≤ 50,000,000;
对于 100%的数据,2 ≤a, b≤ 2,000,000,000。
1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 using namespace std; 5 long long modd(long long m,long long n,long long &x,long long &y) 6 { 7 if(!n) 8 { 9 x=1; 10 y=0; 11 return m; 12 } 13 else 14 { 15 long long r=modd(n,m%n,x,y); 16 long long t=x; 17 x=y; 18 y=t-m/n*y; 19 return r; 20 } 21 } 22 int main() 23 { 24 freopen("mod.in","r",stdin); 25 freopen("mod.out","w",stdout); 26 long long n,m,x,y; 27 cin>>m>>n; 28 long long gcd=modd(m,n,x,y); 29 while(x<0)x+=n/gcd; 30 cout<<x; 31 return 0; 32 fclose(stdin); 33 fclose(stdout); 34 }