[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 //扩展欧几里得:
 2 #include <cstdio>
 3 
 4 int a, b;
 5 
 6 int exgcd(int a,int b,int &x,int &y)
 7 {
 8     if(b==0)
 9     {
10         x=1,y=0;
11         return a;
12     }
13     int r=exgcd(b,a%b,x,y),tmp;
14     tmp=x,x=y,y=tmp-a/b*y;
15     return r;
16 }
17 /*
18 void exgcd(int a, int b, int &x, int &y) 
19 {
20     if (!b) 
21     {
22         x = 1, y = 0;
23         return;
24     }
25     int q = a / b, r = a % b;
26     exgcd(b, r, y, x);
27     y -= q * x;
28 }
29 */
30 
31 int main() {
32     scanf("%d%d", &a, &b);
33 
34     int x, y;
35     exgcd(a, b, x, y);
36 
37     while (x < 0) x = x + b;
38 
39     printf("%d", x);
40     return 0;
41 }

然而我的代码就是打暴力:

(我都不知道我是怎么打出来的样例过了我就交上了,竟然能够A 6个点)

上代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<string>
 6 #include<cmath>
 7 #include<cstdlib>
 8 
 9 using namespace std;
10 
11 long long a,b,k;//对于 40%的数据,2 ≤b≤ 1,000; 对于 60%的数据,2 ≤b≤ 50,000,000; 对于 100%的数据,2 ≤a, b≤ 2,000,000,000。
12 long long x0=1;
13 
14 void ss(long long b)
15 {
16     while(x0<a*b)
17     {
18         if((a*x0)%b==1)
19         {
20             printf("%lld",x0);
21             return;
22         }
23         else ++x0;
24 
25     }
26     if(x0==a*b)
27     {
28         b+=b;
29         ss(b);
30     }
31 }
32 
33 int main()
34 {
35     freopen("mod.in","r",stdin);
36     freopen("mod.out","w",stdout);
37     scanf("%lld%lld",&a,&b);
38     if(a>b)
39     {
40         a=a%b;
41     }
42     if(a<b)
43     {
44         ss(b);
45     }
46     fclose(stdin);
47     fclose(stdout);
48     return 0;
49 }

如果运气好也是错,那我倒愿意错上加错!

❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀

原文地址:https://www.cnblogs.com/zxqxwnngztxx/p/6730707.html