About_NumberTheory

<!DOCTYPE html>

数论杂谈(by $KesdiaelKen$)

数论杂谈(by


目录:

逆元求法

整除分块

卡特兰数


逆元

逆元定义:已知正整数,求使得

问题

求1到n模p(p为质数且p>n)意义下的逆元

求法1 扩展欧几里得求

直接对于每一个都求一次

求法2 费马小定理

单个求:

优化:

有a的逆元为,b的逆元为的逆元为

线性筛求解

求法3 递推公式

表示k的逆元


求法4 阶乘求法

首先逆元

之后倒着递推求出的逆元

又有

再次递推求即可

整除分块

问题:求
(当然不是只能在这个式子上应用,但它的确是最经常应用到整除分块的式子,没有之一)并将时间复杂度从降到

整除分块能实现基于这样一个事实:的取值总共不会超过种。为什么呢,我们来证明一下:

时:

我们需要证明:

我们设,那么就有。根据除法的性质,,而又因为,所以,所以

如果,那么就可以表示为),即。而我们又知道。所以,即等式两边矛盾。所以由反证法我们就得到了。因此,在此情况下的取值个数就等于的取值数,即种。

时:

这个不用怎么说了吧……都已经是小于的了,总取值数当然不超过啊。

所以,两类加起来就是种了。

既然证玩了这个结论,我们就可以考虑这样一个思路:因为的取值数为(那个是常数,可以忽略),那么只要求出它取每一种值时的最大值和最小值是多少,最终求和的时候用前缀和预处理算一下每一段的值是多少,加起来就可以了。

那么接下来,我们又需要证明一个结论了:

如果已知正整数),则使的最大整数的值就是

证明:

我们同样分类讨论一下。

时:

我们设,那么就有。根据除法的性质,,而又因为,所以,所以。而的值就是

那么,就会有。在此基础上,让我们再证明一个结论:。我们令,则。又因为而,所以,所以。因为,所以我们可以得出:。所以:。又因为,所以必须为。所以就证完了。而又由我们上面证的结论:的取值总共不会超过种可以知道当的时候,所有的值都不相同,即。所以,得证了。

时:

我们设,那么就有。根据除法的性质,。而的值就是

那么,就会有。而我们现在要证明的,就是。看上去很难证,但是我们注意到必须符合且只需要符合的两个条件:。那么,如果我们需要证明,那么就只需要说明。看到你想到了什么?

聪明的读者一定已经想到了,因为这个(讲了这么多这个不可能不会自行理解吧),所以这个结论在上面讨论的时候已经证过了。所以,得证啦!

综合上面两个结论,我们便可以得出整除分块的思路了:

  1. 对于当前的求得,设为

  2. 通过前缀和或公式(例如等差数列公式)求得函数(中的)的自变量从一直到的函数值的总和,并且加进

  3. 我们已知,所以我们让。如果现在的仍然小于,则跳转第步,否则结束

最终得到的就是答案了。

卡特兰数

递推公式1

定义,长为题目表面形式

递推公式2

证明:转化成实际问题求得除递推公式1外另一个复杂度较高的递推公式,综合二公式求得递推公式2(多边形三角剖分问题)

组合公式 1

证明:由递推公式2用累积法求得

组合公式 2

证明:倒推可得到组合公式1