数论东西很多又很杂,所以想要总结一下,有一些算法的百度百科讲得很清楚,所以我就直接给了个链接在这(其实是懒23333),方便自己复习吧。 欧几里得算法 "百度百科" 辗转相除法求gcd与lcm 使用辗转相除算出gcd后,lcm可以直接通过gcd算出,但是注意求lcm的过程可能爆int,建议使用lon ...
分类:
其他好文 时间:
2019-01-23 21:28:38
阅读次数:
211
1.欧几里得算法(辗转相除法) 直接上gcd和lcm代码。 2.扩欧:exgcd:对于a,b,一定存在整数对(x,y)使ax+by=gcd(a,b)=d ,且a,b互质时,d=1。 x,y可递归地求得。 我懒得改返回值类型了 求解 x,y的方法的理解: 设 a>b。1,显然当 b=0,gcd(a,b ...
分类:
其他好文 时间:
2019-01-21 22:54:24
阅读次数:
228
のすたの“类欧几里得算法”第二题 P5170 【题意】已知$n,a,b,c$,求 $$ \begin{aligned} f_{1}(a,b,c,n)&=\sum_{i=0}^n\lfloor\dfrac{ai+b}{c}\rfloor\\ f_{2}(a,b,c,n)&=\sum_{i=0}^n\l ...
分类:
编程语言 时间:
2019-01-21 22:11:47
阅读次数:
360
"洛古题面" 对于操作一,用快速幂算即可 代码如下 对于操作二,用拓展欧几里得算法即可。 已知$a,b,n$,求$x$的最小值,使得$a x≡b(mod p)$,可以转化为:$a x+p y=b$,则要求$gcd(a,n)|b$,否则无解。不定方程的求法可以参照 "这道题" $exgcd$代码如下 ...
分类:
其他好文 时间:
2019-01-19 21:16:14
阅读次数:
192
什么是扩展欧几里得? 扩展欧几里得算法是建立在欧几里得算法(gcd)之上。 首先,我们知道有$a x+b y=gcd(a,b)$ 我们怎么求这个$x,y$呢? 这时候我们就得使用exgcd算法,我们来推导一下吧! $a x+b y=gcd(a,b)$ $a x+b y=gcd(b,a\% b)$ $ ...
分类:
编程语言 时间:
2019-01-15 10:41:35
阅读次数:
142
求解最大公约数常用欧几里得算法(即辗转相除法) 设a、b均为正整数,则$gcd(a,b)=gcd(b,a\%b)$ 证明:设$a=kb+r$,其中k和r分别为a除以b得到的商和余数。则有$r=a-kb$成立。 设d为a和b的一个公约数,那么由$r=a-kb$,得d也是r的一个约数。因此d是b和r的一 ...
分类:
其他好文 时间:
2019-01-11 19:00:02
阅读次数:
158
为增加游戏的趣味性,待猜的数字可使用一个产生1-500以内的随机整数,可按以下方式计算这个整数(%为取余操作):1-500以内的随机整数=随机整数%499+1可借助stdlib.h中定义的srand函数来生成公式右边所需要的随机数,该函数需要一个数值做为产生随机数的种子(也就是这个函数的唯一个参数),通常使用当前时间值作为参数,当前时间值可以通过time函数(以0做为参数调用,该函数在time.h
分类:
其他好文 时间:
2019-01-11 11:25:44
阅读次数:
199
欧几里得算法: 百度百科:欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b) = gcd(b,a mod b)。 代码实现如下: ...
分类:
编程语言 时间:
2019-01-10 21:44:39
阅读次数:
615
代码均未经过编译!!!~~(不用编译啦)~~ 默认: 快速幂 正整数a,b,p,求a^b(mod p)的值,时间复杂度O(logb) 最大公约数 正整数a,b,求a,b的最大公约数,时间复杂度在log级别 最小公倍数 正整数a,b,求a,b的最小公倍数,时间复杂度在log级别 扩展欧几里得算法 正整 ...
分类:
其他好文 时间:
2019-01-03 23:08:56
阅读次数:
274
欧几里得算法:最大公因数$(gcd)$ 该算法基于: $gcd(a,b)=gcd(b,a$%$b)$ 证明: 令$a$ % $b = r$, 则 $a = k b + r,$ 因此$r = a k b$ 设$d$为$a,b$的公约数,那么$d|a, d|b,$ 则$a k b$ 能被$d$整除,即$ ...
分类:
编程语言 时间:
2018-12-14 17:24:50
阅读次数:
206