[OI] 数学与推论证明 1(高数篇)
Contest
\(1\). 数论定义
\(2\). 整除
\(3\). 最大公约数与最小公倍数
\(4\). 素数
\(5\). 同余
\(6\). 排列与组合
\(7\). 斐波那契数列
\(8\). 导数与积分
\(9\). 莫比乌斯函数与莫比乌斯反演
\(10\). 容斥原理拓展
\(\aleph\). 杂项
前情提要
信息学数论也是数学内容,涉及繁杂的数学推理与证明过程,以下为了简明文章内容,说明如下.
-
"证明过程如下" 替换为 "\(P.(id)\)".
-
"实现代码如下" 替换为 "\(Program\)",并将代码折叠.
-
上文提到的函数,定理等直接列出,必要处指出定义章节.
-
博客排布不等于撰写顺序,需要时会添加.
1.数论定义
1.1 积性函数与数论加性函数
1.1.1 概述
若函数 \(f(x)\) 满足 \(f(1)=1\),且对于任意互质的自然数 \(x,y\),都有 \(f(xy)=f(x)f(y)\),则 \(f(x)\) 为积性函数.
若函数 \(f(x)\) 满足 \(f(1)=1\),且对于任意自然数 \(x,y\),都有 \(f(xy)=f(x)f(y)\),则 \(f(x)\) 为完全积性函数.
若函数 \(f(x)\) 对于任意互质的整数 \(x,y\),都有 \(f(xy)=f(x)+f(y)\),则 \(f(x)\) 为数论加性函数.
1.1.2 积性函数的性质
\(No.1121\) 若 \(f(x),g(x)\) 为积性函数,则以下函数为积性函数:
2.整除
2.1 概述
若存在整数 \(c\),使 \(a=bc\),则有 \(b\) 整除 \(a\),记作 \(b\mid a\),否则 \(b \nmid a\).
\(No.211\) 若 \(a\mid b,b\mid c\) ,则 \(a\mid c\).
\(No.212\) 若 \(b\mid a,b\mid c\),则 \(b\mid (a \pm c)\).
\(No.213\) 若 \(b\mid a\),则有 \(a=0\) 或 \(|a|=|b|\).
\(No.214(fromNo.213)\) 若 \(\mid b,b\mid a\),则 \(a=b\).
此外,对于一些特殊的数,满足:
\(No.215\) 若 \(k\in N_{+}\),则 \(p^{k}-q^{k}=(p-q)(p^{n-1}+p^{n-2}q+...+pq^{n-2}+q^{n-1})\),即 \((p-q)\mid (p^{k}-q^{k})\).
\(No.216(fromNo.215)\) 若 \(k\in N_{+}\),则 \((p-1)\mid (p^{k}-1)\).
\(No.217\) 若 \(k\) 为正奇数,则 \((x+y)\mid (x^{k}+y^{k})\).
2.2 整除推论
\(No.221\) \(S(n)\) 表示 \(n\) 的各个数位数字之和,则 \(9\mid n\) 的充分必要条件为 \(9\mid S(n)\).
设 \(n=a_{k}\times 10^{k}+...+a_{1}\times 10+a_{0}\),则 \(S(n)=a_{k}+...+a_{0}\). 那么 \(n-S(n)=a_{k}(10^{k}-1)+...+a_{1}(10-1)\),该式每一项均是 \(9\) 的倍数,得证.
3.最大公约数与最小公倍数
3.1 最大公约数概述
定义 \((x,y)\) 为 \(x,y\) 的最大公约数. \((x,y)\)定义为 满足 \(x \mid k\) 且 \(y \mid k\) 的 \(k\) 的最大值.
\(No.311\) \((x,y)=(-x,y)=(x,-y)\)
\(No.312\) \((x,y)=(y,x)\)
\(No.313\) \((x,y)=(x,y+ax)\ (a\in Z)\)
设 \((a,b)=k\),有 \(k\mid ax+b\ (x\in Z)\),则 \(k\) 为 \((a,b+ax)\) 的一个公约数.
假设 \((a,b+ax)>k\),即 \((a,b+ax)=k+m\ (m>0)\),有 \(k+m\mid a,k+m\mid b+ax,k+m\mid ax\),则 \(k+m\mid b\),有 \((a,b)=k+m\),假设不成立. 故 \((a,b)=(a,b+ax)\).
\(No.314\) 若 \((a,b)=c,d\mid a,d\mid b\),则 \((\frac{a}{d},\frac{b}{d})=\frac{c}{d}\).
若 \(d\mid a,d\mid b\),说明 \(a,b\) 有公因子 \(d\),由最大公约数定义,\(d\mid c\),将该因子除去,\(c\) 也相应减少一个因子 \(d\).
3.2 裴蜀定理
\(No.321\) 若 \(a,b\) 不全为 \(0\),则对任意整数 \(x,y\),有 \((a,b)\mid ax+by\).
\(No.322\) 若 \(a,b\) 不全为 \(0\),则存在整数 \(x,y\),使 \(ax+by=(a,b)\).
不妨设 \(d\le b,\ (a,b)=d\).
可得 \(d\mid ax+by\).
令 \(s\) 为 \(ax+by\) 的最小正值,令 \(a=sq+r\),有 \(r=a\ mod\ s=a-q(ax+by)=a(1-qx)+b(-qy)\).
由 \(r=a\ mod\ s\),得 \(0\le r < s\),但因 \(s\) 为 \(ax+by\) 的最小正值,不可能存在满足 \(ax+by\) 的更小的正数,而 \(r=a(1-qx)+b(-qy)\) 恰好为 \(ax+by\) 的形式,因此只能令 \(r=0\). 所以 \(s\) 是 \(a,b\) 的一个公约数. 可以得到 \(d\mid s\).
我们知道,两个数的公约数一定不大于它们的最大公约数,而 \(d\mid s\) 又要求 \(d\le s\). 因此只能令 \(d=s\). 得证.
\(No.323 (from No.322)\) 若 \(a,b\) 不全为 \(0\),且有正数 \(d\) 满足 \(a\mid d\) 且 \(b\mid d\). 若存在整数 \(x,y\) 满足 \(ax+by=d\),则 \(d=(a,b)\).
\(No.324(fromNo.322)\) 若 \(a,b\) 不全为 \(0\),则存在整数 \(x,y,d\),使 \(ax+by=d\) 有解的充要条件为 \((a,b)\mid d\).
3.3 欧几里得算法 (辗转相除法)
欧几里得算法主要用于求 \((a,b)\) 的值,所用的原理可以表示如下:
\(No.331\) \((x,y)=(y,x\ mod\ y)\ (x>y)\).
不妨设 \(x>y\).
将 \(x\) 拆成两部分: 一部分为 \(y\) 的整倍数,另一部分为余下部分,可以得出,余下部分最小为 \(x\ mod\ y\).
那么令 \(x=ky+x\ mod\ y\ (k\in Z)\),定义正整数 \(d\) 满足 \(d\mid x\) 且 \(d\mid y\).
移项,\(x\ mod\ y=x-ky\),则有 \(\frac{x\ mod\ y}{d}=\frac{x}{d}-\frac{ky}{d}\). 由前方证得等式左方两项均为整数,则等式右方也为整数,那么 \(d\mid x\ mod\ y\).
可得 \((y,x\ mod\ y)=d\),得证.
$Program$
int gcd(int a,int b){
if(b == 0) return a;
return gcd(b,a%b);
}
3.4 更相减损术
更相减损术是一种用加减法代替乘除法求最大公约数的过程,利用原理为 \(No.313\). 同时,这种方法还有一种优化策略:
\(No.341(fromNo.314)\) 若 \(2\mid a,2\mid b\),则 \((a,b)=\frac{1}{2}(\frac{a}{2},\frac{b}{2})\).
\(No.342\) 若 \(2\mid a,2\nmid b\),则 \((a,b)=(\frac{a}{2},b)\).
\(2\nmid b\) 说明两者无公因子 \(2\),说明将该因子除去不影响结果.
3.5 扩展欧几里得算法
扩展欧几里得算法可以求出裴蜀方程 \(ax+by=(a,b)\) 的一组解.
证明没看懂,先咕了
$Program$
int exgcd(int a,int b,int &x,int &y){
if(b ==0){
x=1;
y=0;
return a;
}
int ret=exgcd(b,a%b,x,y);
int t=x;
x=y;
y=t-a/b*y;
return ret;
}
3.6 求裴蜀等式最小正解
一般来说,我们求裴蜀等式都会解出一个解集组,这时候让我们对于其中一个解取一组特殊值. 因此我们需要根据一组求出来的一般解解出特殊解. 通常情况下我们采用如下等式.
\(No.361\) \(ax+by=a\ (x-bk)+b\ (y+ak)\)
下面我们来讨论解出最小正解的方式.
注意到我们只需要求出最大的 \(k\) 值即可,令 \(x-bk>0\),有 \(bk<x\),得出 \(k_{max}=floor(\frac{x}{b})\),那么 \(x_{ans}=x-bk\) 即可.
事实上,该式也可写作 \(x_{ans}=(x\ mod\ p+p)\ mod\ p\).
3.7 扩展欧几里得算法解一般裴蜀等式
一般裴蜀等式是指 \(ax+by=c\ (a,b,c,x,y\in Z)\) 这样的式子. 对于这样的式子,我们有:
\(No.371\) 满足 \(ax+by=c\) 有解的充要条件为 \((a,b)\mid c\).
因此,对于 \(ax+by=c\),我们可以将其化为 \(\frac{a\ (a,b)}{c}x+\frac{b\ (a,b)}{c}y=(a,b)\),这样,我们可以用扩展欧几里得解出一组 \(\frac{a\ (a,b)}{c}x\) 与 \(\frac{b\ (a,b)}{c}y\).
4.素数
4.1 概述
素数是除了 \(1\) 与它本身外无其他正因子的整数.
\((a,b)=1\) 的两个整数称互素.
\(No.411\) 大于 \(1\) 的整数必有素约数.
\(No.412\) 若 \(p\) 是素数,则对于任意整数 \(n\),要么 \(p\mid n\),要么 \(p,n\) 互素.
4.2 算术基本定理
4.3 质因数分解
\(No.431\) 一个数 \(n\) 的因数 \(m\) 一定是由它的质因数组成的
假设该结论不成立,则说明存在 \(p\),使得 \(p\nmid n\) 且 \(p\mid m\). 不妨设 \(m=kp\ (k\in Z)\),则有 \(kp\nmid n\),即 \(m\nmid n\),与假设矛盾,故结论成立
\(No.432 (from No.431)\) 给一个数 \(n\) 乘一个它的因数,不会改变 \(n\) 的质因数个数.
4.4 欧拉函数
4.4.1 概述
欧拉函数用于计算小于等于 \(n\) 的数中与 \(n\) 互质的数的个数. 它的计算公式如下:
其中 \(p_{i}\) 为 \(n\) 不重复的质因子.
4.4.2 欧拉函数的性质
\(No.4421\) \(\varphi(1)=1\)
\(No.4422\) 若 \(p\) 为素数,则 \(\varphi(p)=p-1\).
\(No.4423\) 若 \(p\) 为素数,则 \(\varphi(p^{k})=(p-1)\ p^{k-1}\).
假设 \(p \mid l\),不妨设 \(l=mp\ (m\in Z)\). 由欧拉定理中 \(l\le n\),可知 \(mp\le p^{k}\),即 \(m\le p^{k-1}\),这些数都能被 \(p\) 整除,因此不与 \(p^{k}\) 互质. 由 \(No.412\),与 \(p^{k}\) 互质的数就有 \(p^{k}-p^{k-1}=(p-1)\ p^{k-1}\) 个.
\(No.4424\) \(\varphi(x)\) 为积性函数.
\(No.4425\) 区间 \([1,n]\) 中全部与 \(m\) 互质的数的个数为 \(\frac{n}{m} \varphi(m)\).
4.4.3 关于欧拉函数的推论
\(No.4431\) 若 \(p\mid n\),则 \(\varphi(n\times p)=p\times \varphi(n)\).
因为 \(p \mid n\), 不妨设 \(n=kp\ (k\in Z)\),则 \(n\times p=kp^{2}\).
根据欧拉函数的定义,有 \(\varphi(kp)=kp\times \prod^{i}_{1\le i\le l}(1-\frac{1}{p_{i}})\),且 \(\varphi(kp^{2})=kp^{2}\times \prod^{j}_{1\le j\le t}(1-\frac{1}{p_{j}})\).
因为 \(kp\) 已有质因数 \(p\),根据 给一个数 \(n\) 乘一个它的因数,不会改变 \(n\) 的质因数值 (\(No.432\)). 可得 \(\varphi(kp)\) 和 \(\varphi(kp^{2})\) 的后项是相等的. 那么就有 \(\varphi(n\times p)=p\times \varphi(n)\).
4.4.4 欧拉筛
关于单独计算单值的欧拉函数,我们可以直接根据定义得到. 从小到大判断原数能否被当前数整除,若可以则将原数中全部相同质因子都去掉.
需要注意的是,与 \(n\) 互质的数中,比 \(\sqrt{n}\) 大的至多只有一个. 因此我们可以只分解出小于 \(\sqrt{n}\) 的质因数,假如最后剩下的数字比一要大,那么剩下的数字即为那个互质的数.
$Program$
int phi(int n){
int ans=n;
for(int i=2;i<=sqrt(n+0.5);i++){
if(n%i==0){
ans=ans/i*(i-1);
while(n%i==0){
n/=i;
}
}
}
if(n>1){
ans=ans/n*(n-1);
}
return ans;
}
欧拉筛可以帮我们提前计算出区间内的全部欧拉函数.
我们使用线性筛做基础来进行.
$Program$
代码中的解释:
- 第二行根据 \(No.4421\)
- 循环前四行为判断素数,\(b\) 数组标记合数,\(prime\) 数组按顺序记录全部的素数,\(p\) 数组为欧拉函数.
- 循环第三行利用 \(No.4422\)
- 后面进行线性筛核心语句
- 循环第七行: 若一个合数 \(n\) 能被一个质数 \(p\) 整除,那么 \(n\times p\) 中一定包含了能与 \(n\) 互质的全部整数.
- 循环最后 : 利用 \(No.4424\)
void euler(int n){
p[1]=1;
for(int i=2;i<=n;++i){
if(!b[i]){
prime[++num]=i;
p[i]=i-1;
}
for(int j=1;j<=num&&prime[j]*i<=n;++j){
b[i*prime[j]]=true;
if(i%prime[j]==0){
p[i*prime[j]]=p[i]*prime[j];
break;
}
else{
p[i*prime[j]]=p[i]*p[prime[j]];
}
}
}
}
当然,除了线性筛,我们还有一种 \(O(n\ logn)\) 的类埃氏筛做法.
$Program$
for(int i=1;i<=n;++i){
p[i]=i;
}
for(int i=2;i<=n;++i){
if(p[i]==i){
for(int j=i;j<=n;j+=i){
p[j]=p[j]*(i-1)/i;
}
}
}
4.5 约数个数函数
定义 \(d(x)\) 表示 \(x\) 的不同正因子个数,形式化地 ,\(d(x)=\sum\limits^{x}_{i}[i\mid x]\)
对于一个大于 \(1\) 的正整数 \(n\) 分解质因数,令 \(n=\prod^{k}_{i=1}p_{i}^{a_{i}}\),则有:
由约数的定义可知 \(p_{i}^{a_{i}}\) 的约数有且仅有 \(p_{i}^{a_{j}}\),其中 \(j\in[0,i]\),即一共有 \((a_{i}+1)\) 个.
由乘法原理得证.
5.同余
5.1 概述
若正整数 \(n,a,b\) 满足 \(n\mid (a+b)\),则称 \(a\equiv b \pmod c\). 否则称 \(a\not \equiv b \pmod c\).
\(No.511\) \(a\equiv b \pmod c\) 的充要条件为 \(a\ mod\ c=b\ mod\ c\).
\(No.512\) \(a\equiv a \pmod n\).
\(No.513\) 若 \(a\equiv b \pmod n,b\equiv c \pmod n\),则 \(a\equiv c \pmod n\).
\(No.514\) 若 \(a\equiv b \pmod n,c\equiv d \pmod n\),则 \((a\pm c)\equiv (b\pm d) \pmod n\).
\(No.515\) 若 \(a\equiv b \pmod n,c\equiv d \pmod n\),则 \((ac)\equiv (bd) \pmod n\).
对于单纯的取模操作,我们也有:
\(No.516\) \(c\ (a+b)\ mod\ p=c\ (a\ mod\ p+b\ mod\ p)\ mod\ p\).
5.2 费马小定理
\(No.521\) 若 \(p\) 为素数,\(a,p\) 互素. 则 \(a^{p-1} \equiv 1\pmod p\).
\(No.522(fromNo.521)\) 若 \(p\) 为素数,\(a,p\) 互素. 则 \(a^{p} \equiv a\pmod p\).
5.3 线性同余方程
线性同余方程是形为 \(ax\equiv b \pmod n\) 这样的一元一次方程,为了解出这样的方程,需要掌握如下技巧.
5.3.1 乘法逆元
若 \(ax\equiv 1 \pmod b\),则称 \(x\) 为 \(a\) 在模 \(b\) 意义下的乘法逆元,记作 \(a^{-1}\).
因为除法取模不满足类分配律,因此出现了乘法逆元来进行 \(\frac{a}{b}\ mod\ p\) 的快速计算.
乘法逆元的定义推导
设 \(\frac{a}{b}\ mod\ p=m\),给等式两边同乘 \(b\),有 \(a\ mod\ p=mb\ mod\ p\) . 若存在 \(ax\ mod\ p=m\).
不妨设 \(a,b < p\),则有 \(a=mb\ mod\ p\). 等式两边同乘 \(x\),有 \(ax\ mod\ p=m\ mod\ p=xmb\ mod\ p\).
联立上述式子,那么 \(m=xmb\ mod\ p\),解得 \(bx\ mod\ p=1\).
一个逆元方程并不一定有解,\(a,b\) 存在倍数关系时无逆元,反之,\(a,b\) 互质时存在逆元.
下面我们介绍求逆元的方法,因此以下默认 \(a,b\) 不存在倍数关系.
费马小定理可以求出当模数 \(b\) 为素数时的逆元.
正确性证明
根据费马小定理,有 \(a^{p-1}\ mod\ p=a\times a^{p-2}\ mod\ p=1\),为逆元方程. 因此 \(a\) 在模 \(p\) 意义下的逆元为 \(a^{p-2}\ mod\ p\).
$Program$
int quickpow(int a,int n,int p){
int ans=1;
while(n){
if(n&1) ans=ans*a%p;
a=a*a%p;
n>>=1;
}
return ans;
}
int bace(int a,int p){
return quickpow(a,p-2,p);
}
扩展欧几里得算法可以求逆元.
正确性证明
若要 \(ax\equiv 1 \pmod b\),则有 \(ax=by+1\),即 \(ax-by=1\). 这里 \(y\) 为中间参数,取相反数不影响结果. 有 \(ax+by=1\),所以可以使用扩展欧几里得算法求逆元. 只需要满足 \(a,b\) 互质.
$Program$
int exgcd(int a,int b,int &x,int &y){
if (b==0) {
x=1;
y=0;
return a;
}
// 注意传参顺序
int ret=exgcd(b, a%b, y, x);
y-=a/b*x;
return ret;
}
还有一种线性求逆元的方法,适合多次大量预处理时使用,利用的原理为
\(No.5311\) \(i^{i}\equiv -\lfloor {\frac{p}{i}} \rfloor \times (p\ mod\ i)^{-1}\pmod {p}\)
$Program1$
ny[1] = 1;
for (int i = 2; i < p; ++i) {
ny[i] = (long long)-(p / i) * ny[p % i] % p; // 注意最后的模 p 不要忘记
}
$Program2$
// 因为 1<i<p,所以 p/i 一定小于 p
ny[1] = 1;
for (int i = 2; i < p; ++i) {
ny[i] = (long long)(p - p / i) * ny[p % i] % p; // 注意最后的模 p 不要忘记
}
5.3.2 线性同余方程
\(No.5321\) 线性同余方程 \(ax\equiv b \pmod m\) 有解的充要条件为 \((a,m)\mid b\).
我们注意到 \(ax\equiv b \pmod m\) 实际上等价于 \(ax-b=ym\ (y\in Z)\). 移项可得 \(ax-ym=b\),不妨设 \(y=-y\),那么有 \(ax+my=b\). 因此我们可以利用扩展欧几里得解出一组通解 \(x_{0},y_{0}\),那么方程的一个解就为 \(x_{1}=\frac{bx_{0}}{(a,m)}\),通解 \(x\) 满足 \(x\equiv x_{1} \pmod {\frac{m}{(a,m)}}\).
5.4 中国剩余定理
中国剩余定理算法可以用于求解一个线性同余方程组 \(\sum_{i} x \equiv a_{i} \pmod n_{i}\) (其中模数必须两两互质).
中国剩余定理的主要内容体现流程如下:
-
计算 \(n=\prod_{i} n_{i}\)
-
计算 \(\sum_{i} m_{i}=\frac{n}{n_{i}}\)
-
计算 \(\sum_{i} c_{i}=m_{i}\times m_{i}^{-1}\pmod {m_{i}}\)
-
\(x=\sum_{i} a_{i}\times c_{i}\ mod\ n\).
正确性证明
引用我们在步骤中使用到的变量.
因为全部的 \(n_{i}\) 两两互质,因此将全部两两互质的数乘起来,可知 \(n\) 其中的质因子 \(n_{i}\) 必然只有一个. 那么 $ m_{i}=\frac{n}{n_{i}}$ 中必然没有质因子 \(n_{i}\),也就是说 \(m_{i},n_{i}\) 互质.
因为互质,所以由乘法逆元的定义,我们可以推出
由 \(No.515\),可得
并且根据上述两两互质,又因为 \(m_{i}=\frac{n}{n_{i}}\),因此 \(m_{i}\ mod\ n_{j}=0\),我们还可以得出
根据构造,可得
符合原方程组的形式,即存在 \(x\) 为原方程的解.
6.排列与组合
6.1 概述
排列是指若干元素排成一列的不同情况 (考虑顺序). 从 \(n\) 个元素中选出 \(m\) 个数的排列的个数称为 \(n\) 选 \(m\) 的排列数,记作 \(A^{m}_{n}\).
排列数的计算公式为
也即
组合是将若干元素选入集合内的不同情况 (不考虑顺序). 从 \(n\) 个元素中选出 \(m\) 个数的组合的个数称为 \(n\) 选 \(m\) 的组合数,记作 \(C^{m}_{n}\).
组合数的计算公式为
也即
一般来说,我们有
\(A^{n}_{n}=A^{n-1}_{n}\).
\(A^{1}_{n}=n\),\(C^{1}_{n}=n\).
\(A^{n}_{n}=n!\),\(C^{n}_{n}=1\).
\(C^{n-1}_{n}=n\).
\(C^{m}_{n}=C^{n-m}_{n}\).
\(C^{m}_{n}=C^{m-1}_{n-1}+C^{m}_{n-1}\).
6.1.1 二项式定理
二项式定理用于对 \((x+y)^{k}\) 进行展开
\(No.6111\) \((x+y)^{n}=\sum_{i = 0}^n C_{n}^i x^{n - i} y^{i}\)
6.2 快速组合数求法
6.2.1 Lucas 定理
Lucas 定理的适用条件: 组合数很大,模数较小 (一般 \(\le 10^{5}\)) ,且为素数.
\(No.6211\) \(C^{m}_{n}=C^{\lfloor {\frac{m}{p}} \rfloor}_{\lfloor {\frac{n}{p}} \rfloor}\times C^{m\ mod\ p}_{n\ mod\ p}\ mod\ p\).
不妨设 \(p\) 为质数. 那么对于 \(j\in [1,p)\),有:
可以发现提出了一个因子 \(p\). 也就是说 \(C^{j}_{p}\mod p=0\).
那么根据二项式定理,
因为已证得中间一项中一定有因子 \(p\),故
也即
在这里我们进行构造,设 \(n=sp+q,m=lp+r\ (p,r\in [1,p)\). 也就是都表示成带余除法式. 那么
根据上面的结论,有
再根据二项式定理展开,那么
假若我们只观察 \(x^{lp+r}\) 项. 可以发现 \(C^{lp+r}_{sp+q}\times x^{lp+r}\equiv C^{l}_{s}\times x^{lp}\times C^{r}_{q}\times x^{r} \pmod p\).
根据我们的定义 \(n=sp+q,m=lp+r\),将原式代换,可得
两边同时除以 \(x^{m}\)
那么根据定义,有
$Program_{1}$
long long power(long long a,long long n){
long long ans=1;
while(n){
if(n&1)ans=ans*a%p;
a=a*a%p;
n>>=1;
}
return ans;
}
long long C(long long n,long long m){
if(n<m){
return 0;
}
if(m>n-m){
m=n-m; //C{n}{m}=C{n}{n-m};
}
long long a=1,b=1;
for(int i=0;i<m;++i){
a=(a*(n-i))%p;
b=(b*(i+1))%p;
}
return a*power(b,p-2)%p;
}
long long lucas(long long n,long long m){
if(!m) return 1;
return lucas(n/p,m/p)*C(n%p,m%p)%p;
}
$Program_{2}$
long long fact[1000001];
long long power(long long a,long long n){
long long ans=1;
while(n){
if(n&1)ans=ans*a%p;
a=a*a%p;
n>>=1;
}
return ans;
}
void dofact(){
fact[0]=1;
for(int i=1;i<=1000000;++i){
fact[i]=fact[i-1]*i%p;
}
}
long long C(long long n,long long m){
if(!m){
return 1;
}
if(n<m){
return 0;
}
if(m>n-m){
m=n-m; //C{n}{m}=C{n}{n-m};
}
long long ans=fact[n]*power(fact[m],p-2)%p*power(fact[n-m],p-2)%p;
return ans;
}
long long lucas(long long n,long long m){
if(!m) return 1;
return lucas(n/p,m/p)*C(n%p,m%p)%p;
}
7.斐波那契数列
7.1 整除推论
设 \((i,j)=gcd(i,j)\)
因为 \(f_{2}=1\),则 \(f_{2}\mid 2x+1(x\in Z)\),但 \(2\nmid 2x+1 (x\in Z)\),故上述式子存在特例,且该特例唯一.
7.2 约数推论
设 \(tot(i)\) 是 \(i\) 的约数的个数,将 \(i\) 用唯一分解定理分解为
则有
那么
即 \(tot(x)\) 为 积性函数.
若质数 \(p\mid i\),则 \(min_{j}[j\mid (i\times p)]=p\),且 \(c_{p_{i}}=2\)
若质数 \(p\) 是 \(i\times p\) 的最小因子,不妨设
则
则
所以我们引入 \(mintimes(i)\) 表示 \(i\) 的最小约数的 \(c_{i}\).
上述式子可以表示成
上述推论对全部 \(p\in p_{i}\) 均成立
7.3 平方和推论
设 \(sqrtot(i)\) 为 \(i\) 的约数的平方和,与 \(tot(i)\) 类似,可得
所以 \(sqrtot(x)\) 也为积性函数
同理,不妨设
则
7.4 通项公式
斐波那契的递推定义式为 \(f_{n}=f_{n-1}+f_{n-2}\)
考虑将递推式构造成等比数列形式,即 \(g_{n}=kg_{n-1}\) 的形式,再考虑到斐波那契的递推式由两个元素决定,故表示如下:
将 \(f_{n}=f_{n-1}+f_{n-2}\) 代入,得
因为 \(f_{n-1}\neq f_{n-2}\),故有:
解得
或
带回等比数列,归纳出通项公式:
或
因为这两个式子相对于原式均成立,因此我们尝试从两个式子中消掉 \(f_{n-1}\) 项,可知 \((2)\times \frac{1-\sqrt{5}}{2}-(1)\times \frac{1+\sqrt{5}}{2}\) 即可得到通项公式
整理得
7.5 斐波那契间项积与中项平方的关系
正确性证明
为了简化我们的证明,以下令 \(P=\frac{\sqrt{5}+1}{2},Q=\frac{1-\sqrt{5}}{2}\),则通项公式可表述为 \(\frac{1}{\sqrt{5}}(P^{n}-Q^{n})\)
将原式全部用通项公式代换,得
全部拆开
消项
变形
因为上文中设 \(P=\frac{\sqrt{5}+1}{2},Q=\frac{1-\sqrt{5}}{2}\),故 \(PQ=-1,\frac{P}{Q}=-\frac{3+\sqrt{5}}{2},\frac{Q}{P}=-\frac{3-sqrt{5}}{2},\frac{P}{Q}+\frac{Q}{P}-2=-5\),消去 \(-\frac{1}{5}\),得
7.6 斐波那契同比
当 \(n\rightarrow +\infty\) 时,\(\frac{f_{n}}{f_{n-1}}=\frac{f_{n-1}}{f_{n-2}}\)
正确性证明
由 7.5 可知,\(f_{n}f_{n-2}-f_{n-1}^{2}=(-1)^{n-1}\),对其移项
同除 \(f_{n-1}f_{n-2}\)
当 \(n\rightarrow +\infty\) 时,\(\frac{(-1)^{n-1}}{f_{n-1}f_{n-2}}\rightarrow 0\),故有
7.7 斐波那契黄金公比
由 7.6,设 \(\frac{f_{n}}{f_{n-1}}=\frac{f_{n-1}}{f_{n-2}}=k\),有
此时将 \(f_{n-1}=kf_{n-2}\) 代入
消去 \(f_{n-2}^{2}\)
解得 \(k=\frac{1+\sqrt{5}}{2}\),即黄金分割比
8.导数与积分
8.1 导数
8.1.1 导数的意义
\(f(x)\) 在 \(x\) 处的导数 \(f'(x)\) 的含义为:\(f(x)\) 在 x 处的切线斜率 \(k\). 如 \(f(x_{0}):kx+b=k\).
8.1.2 基本导数公式
推论
8.1.3 初等函数导数公式
-
\((k)'=0\)
-
\((x^{k})'=kx^{k-1}\)
-
\((a^{x})'=a^{x}ln\ a\)
-
\((log_{a}x)'=\frac{1}{xln\ a}\)
-
\((sin\ x)'=cos\ x\)
-
\((cos\ x)'=-sin\ x\)
-
\((tan\ x)'=sec^{2}\ x\)
-
\((sinh\ x)'=cosh\ x\)
8.1.4 反函数公式
8.1.5 复合函数导数公式
8.1.6 牛顿莱布尼茨公式
举点例子
对 \(2x^{3}+3^{x}\) 求导
套式子,\(f'(x)=2(x^{3})'+(3^{x})'=6x^{2}+3^{x}ln\ 3\)
或者使用公式 \(f'(x)=\frac{f(x+dx)-f(x)}{dx}\) 直接计算,其中 \(dx\) 是一个引入的无穷小的变量,先约,然后按 \(kdx=0\) 进行消项.
对 \(x^{3}\) 求导
\(\frac{df(x)}{dx}=\frac{(x+dx)^{3}-x^{3}}{dx}=\frac{x^{3}+3x^{2}dx+3xdx^{2}+dx^{3}-x^{3}}{dx}=3x^{2}+3xdx-dx^{2}\),当 \(dx\rightarrow 0\) 时,\(\frac{df(x)}{dx}=3x^{2}\)
8.2 积分
8.2.1 定义
表示 \(f(x)\) 在区间 \([a,b]\) 内的图像与 \(x\) 轴围成封闭图形的面积(这样说是不严谨的,实际上还要包括 \(y=a,y=b\) ).
如
表示函数 \(f(x)=2\) 与 \(y=0,y=3,x\) 轴围成的图形面积为 \(6\).
积分符号用来表示 “某段区间内连续不断的加和” 这样的概念,不一定非得是面积. 只不过面积是长乘宽,当宽无穷小时(即 \(dx\)),对应的长即为 \(f(x)\),面积为 \(f(x)dx\).
8.2.2 基本定理
令 \(f(x)=\frac{d}{dx}g(x)\),则
实际上,它告诉我们的是 “将 \(g(x)\) 在 \([a,b]\) 的微小变化加和”,即:
根据基本定理,我们要求一个函数 \(f(x)\) 的积分,重在知道一个 \(g(x)\),使得 \(g'(x)=f(x)\),因为对于任意合适的 \(g(x)\),\([g(x)+c]'=f(x)\),所以称 \(g(x)+c\) 为 \(f(x)\) 的不定积分,其中 \(c\in R\).
比如我们需要求出
首先我们需要知道 \(x^{2}\) 的最简单的不定积分应为 \(\frac{1}{3}x^{3}\),因为 \((\frac{1}{3}x^{3})'=x^{2}\),则,
8.2.3 算术定理
1
2
3
根据 1 有:
移项:
8.2.4 换元法
8.2.5 逆基本定理
9. 莫比乌斯函数与莫比乌斯反演
9.1 莫比乌斯函数
9.1.1 定义
设 \(\mu\) 为莫比乌斯函数,则有:
直观地说,只要 \(x\) 的某个质因子出现的次数超过一次,则有 \(\mu(x)=0\),否则,\(mu(x)\) 即为 \((-1)^{t}\),其中 \(t\) 为 \(x\) 的质因数总数.
9.1.2 性质
\(No.9121\) \(\forall (i,j)=1\rightarrow\mu(i\times j)=\mu(i)\times \mu(j)\)
若 \(\mu(A)=1\),则有 \(\mu(A)\times \mu(B)=1\times \mu(B)=\mu(1\times B)\),结果成立
若 \(\mu(A)=0\),则有 \(\mu(A)\times\mu(B)=0\),结果成立
否则设 \(A=\prod_{i\in prime}i,B=\prod_{j\in prime}j\ (\forall i\neq j)\),则有 \(\mu(A)\times\mu(B)=\mu(A\times B)\)
\(No.9122\)
\(n=0\) 时,原式等于 \(0\)
\(n=1\) 时,原式等于 \(\mu(1)=1\)
否则,设 \(n\) 的唯一分解式为 \(n=\prod_{1\le i\le k}p_{i}^{a_{i}}\),由 \(\mu(n)\neq 0\) 知 \(\forall a_{i}=1\)
显然,\(\forall d\mid n\),有 \(i\) 个质因子的数 \(d\) 有 \(C^{i}_{k}\) 种组合情况,每种组合的值为 \((-1)^{i}\),即:
使用二项式定理转化:
发现此时在定义域 \((k\neq 0)\) 内恒为 \(0\),易知当 \(n\gt 1\) 时,\(k_{n}\ge 1\),因此 \(\mu(n)=0\),证毕.
9.2 莫比乌斯反演
9.2.1 不完全结论
设
对于
考虑到
根据 \(No.9122\) 得出推导式:
代入有:
即:
将原式等价转换,可以得到
其中
(可以发现,在这里仅仅是将判断条件与枚举条件互相变换了,而答案是不变的)
在区间 \([1,\lfloor{\frac{n}{k}}\rfloor]\) 中,满足条件 \(d\mid i\) 的 \(i\) 有 \(\lfloor{\frac{n}{kd}}\rfloor\) 个,因此原式可化为
可以证明,当 \(d\gt \min(\lfloor{\frac{n}{k}}\rfloor,\lfloor{\frac{m}{k}}\rfloor)\) 时不存在解.
9.2.2 完全结论
博主去学卷积了,学完回来更
10.容斥原理拓展
10.1 二项式反演
设 \(U=\{S_1,S_2,S_3...S_n\}\),且任意 \(i\) 个元素的交集都相等
定义 \(g(x)\) 为 \(x\) 个集合的交集,\(f(x)\) 为 \(x\) 个集合补集的交集(定义 \(f(0)=g(0)=U\)),则:
可知对 \(g(i)\),符合要求的 \(f(i)\) 组合共有 \(C^{i}_{n}\) 种,即原式可以化为:
同理有
因为
因此得出结论:
因为
因此
当 \(j\neq n\) 时,原式值为 \(0\),否则值为 \(1\).
当 \(g(n)=\sum\limits^{n}_{i=0}(-1)^{i}C^{i}_{n}f(i)\iff f(n)=\sum\limits^{n}_{i=0}(-1)^{i}C^{i}_{n}g(i)\) 成立时,可以推知
该式末项 \(\sum\limits^{n}_{i=j}\{(-1)^{i}\times C^{i}_{n}\times(-1)^{j}\times C^{j}_{i}\}\) 已有上述结论,故当 \(j\neq n\) 和 \(j=n\) 时分别带入讨论,发现原式均成立,证毕.
事实上,二项式反演还有一个更常用的推导式:
根据二项式反演的性质,我们通常会构造一组 \(\{ f(i),g(i)\}\),使得两者之间存在包含关系并且有一者很方便求出,通过反演来快速得到另一者的值.
二项式反演还有其他形式:
10.2 Min-Max 容斥
对于满足全序关系并且其中元素满足可加减性的序列 \(\{x_i\}\),设其长度为 \(n\),并设 \(S=\{1,2,3,\cdots,n\}\) ,则有:
一个常用的实际应用为 Min-Max 容斥的低维版本:\(\min(a,b)=a+b-\max(a,b)\)
证明略.
10.3 错位排列
满足 \(\forall i\neq a_{i}\) 的排列被称为错位排列.
10.3.1 公式
套用补集的公式,问题变成求
可以知道,\(\overline{S_i}\) 的含义是满足 \(P_i=i\) 的排列的数量。用容斥原理把问题式子展开,需要对若干个特定的集合的交集求大小,即:
其中省略了 \(a_i<a_{i+1}\) 的条件以方便表示
上述 \(k\) 个集合的交集表示有 \(k\) 个变量满足 \(P_{a_i}=a_i\) 的排列数,而剩下 \(n-k\) 个数的位置任意,因此排列数:
那么选择 \(k\) 个元素的方案数为
\(C^{k}_{n}\),因此有:
因此 \(n\) 的错位排列数为:
10.3.2 递推式
待证明
10.4 Catalan 数
1 1 2 5 14 42 132
关于 Catalan 数的常见公式:
\(\aleph\). 杂项
\(\aleph\).1 平方数模意义下的特殊性质
对于任意 \(x\in Z\),都有 \(x^{2}\ mod\ 3\neq 2\).
设 \(x=3k+p\ (k,p\in Z,\ 0\le p\le 2)\)
则有
故
当 \(p=0\) 时,\(x^{2}\ mod\ 3=0\)
当 \(p=1\) 时,\(x^{2}\ mod\ 3=1\)
当 \(p=2\) 时,\(x^{2}\ mod\ 3=4\ mod\ 3=1\)
综上,\(x^{2}\ mod\ 3\neq 2\)
\(\aleph\).2 调和级数的发散性
证明下述式子:
考虑对调和级数进行分组:
以此类推,将区间 \((\frac{1}{2^{k-1}},\frac{1}{2^{k}}]\) 内的数分为一组,共 \(2^{k-1}\) 个数,最小数为 \(\frac{1}{2^{k}}\),可知其和最小为 \(\frac{1}{2^{k}}\times 2^{k-1}=\frac{1}{2}\),依次分组,得到的 \(\frac{1}{2}\) 也为无限组,即其不收敛
\(\aleph\).3 模意义概率
设有一分数 \(f_{a,b}=\frac{a}{b}\),则有 \(f_{a,b}\mod p=a\times b^{p-2}\)
定理一
证明显然,因为 \((a\times b^{p-2})\times (c\times d^{p-2})=(a\times c)\times (b\times d)^{p-2}\)
定理二
(定义 \(a(\lt 0)\mod p=(a+kp)\mod p(a+kp\gt 0)\))