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 }

 

posted @ 2017-04-19 17:02  zzzzx  阅读(151)  评论(0编辑  收藏  举报