什么是GCD? GCD是最大公约数的简称(当然理解为我们伟大的党也未尝不可).在开头,我们先下几个定义: ①a|b表示a能整除b(a是b的约数) ②a mod b表示a-[a/b]b([a/b]在Pascal中相当于a div b) ③gcd(a,b)表示a和b的最大公约数 ④a和b的线性组合表示ax+by(x,y为整数).我们有:若d|a且d|b,则d|ax+by(这很重要!) 线性组合与GCD 现在我们证明一个重要的定理:gcd(a,b)是a和b的最小的正线性组合. 证明: 设gcd(a,b…
题目大意:求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. 题解:即求a在mod b意义下的逆元,这里用扩展欧几里得来解决 C++ Code: #include<cstdio> using namespace std; int a,b,x,y; int exgcd(int a,int b,int &x,int &y){ if(b==0){x=1;y=0;return a;} int t=exgcd(b,a%b,y,x);y-=a/b*x;return t;…
https://www.luogu.org/problem/show?pid=1082 方程可化为ax+by=1. 用扩展欧几里得算法得到ax'+by'=gcd(a,b)的一组解后,可得x=x'/gcd(a,b). 由于x要在[0,b)范围,故最终答案为(x+b)%b. #include <iostream> using namespace std; long long extgcd(long long a, long long b, long long &x, long long &…