12.扩展欧几里得算法

12.扩展欧几里得算法

 12.扩展欧几里得算法

数学太差要命了,本题的数学证明还需要复习

 预备知识:裴蜀定理

12.扩展欧几里得算法

 a和b的最大公约数就是a和b能凑出来的最小的正整数

 扩展欧几里得算法就是构造出来一种方式,使得对于任意的整数a和b,一定存在整数x和y,满足上式

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 ll exgcd(ll a, ll b, int &x, int &y) {
 5     if (!b) {
 6         x = 1;
 7         y = 0;
 8         return a;
 9     }
10     ll d = exgcd(b, a % b, y, x);
11     y -= a / b * x;
12     return d;
13 }
14 int main() {
15     ios::sync_with_stdio(false);
16     cin.tie(0);
17     cout.tie(0);
18     int n;
19     cin >> n;
20     while (n--) {
21         int a, b, x, y;
22         cin >> a >> b;
23         exgcd(a, b, x, y);
24         cout << x << " " << y << endl;
25     }
26     return 0;
27 }

 

上一篇:数论基础


下一篇:扩展欧几里得(模板)