当时想到的第一个想法是用拓展欧几里得解方程,求x的最小正解。一发交了之后发现爆long long,因为m是1e9。 因此本题的正解是暴力,保证有解的情况下,那么a数组中的一个数必然对应着b数组中的一个数,因此,可以遍历数组a,求出b[1]和a[i]对应的x的值,然后再判断是否符合其他元素即可。 要求 ...
分类:
其他好文 时间:
2019-12-27 19:28:42
阅读次数:
93
简单的来说,已知a和m,求a的逆元(如果存在的话等于1/a mod m)。 现分几种情况讨论。 1. m是素数(a<m)。 a的逆元必然存在。两种方法求逆元,在线用拓展欧几里得算,打表用递推。 不用费马小定理在线算逆元是因为拓展欧几里得复杂度O(logn),费马小定理复杂度O(log mod),后者 ...
分类:
其他好文 时间:
2019-10-28 09:13:34
阅读次数:
128
首先需要明确的一点是:这是一种算法,而非一个证明题。 算法的需求与数学证明题是不一样的,数学证明题要求严谨完整,而算法只需要证明我用到的某个的性质成立即可,相当于是“恰好发现了这一点”。 于是对于拓展欧几里得,我们是从欧几里得算法中发现了一个递推的性质,从而受到启发,产生猜想:可不可以利用递推求出二 ...
分类:
编程语言 时间:
2019-10-23 22:10:02
阅读次数:
129
同余问题 同余问题是数论问题中很重要的一部分 欧几里得算法 拓展欧几里得算法 逆元 如果 a*b%p==1 那么a与b互为模p意义下的逆元,那么逆元的作用是什么呢? n/a%p==n*b%p(可以自行理解) 拓欧求逆元 a*b%p==1 => a*b+k*p==1(用拓展欧几里得可以轻易得到答案) ...
分类:
其他好文 时间:
2019-10-18 22:11:38
阅读次数:
94
欧几里得算法(辗转相除法) 用来求解最大公约数 在 #include<algorithm> 中也可以直接调用 __gcd(a,b) 拓展欧几里得算法 求解不定方程: 引理:存在 x , y 使得 ax+by=gcd(a,b) 设a,b,c为任意整数,若方程ax+by=c的一组解是(x0,y0),则它 ...
分类:
编程语言 时间:
2019-08-26 15:03:11
阅读次数:
86
欧几里得算法、拓展欧几里得算法 欧几里得算法:$gcd(a,b)=gcd(b,a\% b)$ 快速欧几里得算法(更相减损术):$gcd(a,b)=gcd(b,a-b)$ 拓展欧几里得算法:解不定方程$ax+by=gcd(a,b)$ 算$gcd(a,b)$时,有$ax+by=gcd(a,b)$ $(1 ...
分类:
其他好文 时间:
2019-08-21 00:37:39
阅读次数:
89
对于 ax+by=gcd(a,b) 这样的方程,可以用扩展欧几里得算法exgcd求出一组通解。 根据欧几里得求gcd: gcd(a,b)=gcd(b,a%b) 可得 bx+(a%b)y=gcd(b,a%b) 根据 a%b=a?(a/b)?b 可得 bx+ay?(a/b)b?y=gcd(b,a%b) ...
分类:
编程语言 时间:
2019-08-14 14:51:39
阅读次数:
120
求逆元的四种算法 拓展欧几里得算法求逆元 "上一篇博客中" 已经讲过拓展欧几里得算法,并且讲解了求逆元的原理。这里只列出代码 在要求逆元的数与p互质时使用 代码 c++ //费马小定理 long long q_pow(long long a,long long b,long long p) { lo ...
分类:
编程语言 时间:
2019-08-10 12:02:06
阅读次数:
368
前言:刷了几天的数论题目,总结一下 1、拓展欧几里得:求解不定方程ax+by=c【当c%gcd(a,b)≠0时,方程无解】 1 void exgcd(ll a,ll b,ll &d,ll &x,ll &y) 2 { 3 if(!b) x=1,y=0,d=a; 4 else {exgcd(b,a%b, ...
分类:
其他好文 时间:
2019-08-03 21:52:17
阅读次数:
119
假设 ax1+by1=gcd(a,b) (方程一) bx2+(a%b)y2=gcd(b,a%b)(方程二)由欧几里得算法gcd(a,b)=gcd(b,a%b) 得到 ax1+by1=bx2+(a%b)y2即ax1+by1=bx2+(a-a/b*b)y2 => ax1+by1=ay2+b(x2-a/b ...
分类:
其他好文 时间:
2019-06-10 11:52:55
阅读次数:
91