目录
数学基础
一、基本数列模型
等差数列:
通项公式:
求和公式:
等比数列:
通项公式:
求和公式:
二、快速幂
计算:
for (int i=1 ; i<=n ; i++) sum *= q; //时间复杂度O(N)
快速幂:
首先对n进行二进制分解(设n为45):45==32+8+4+1=
因为
所以
所以最后只需要计算
时间复杂度为O(log n)
代码如下
int sum = 1;
for (int i=n ; i > 0 ; i /= 2) {
if(i % 2 == 1) sum *= q;
q*=q;
}
三、数论基础
模运算
1.假定参与模运算的均为非负整数
2.模运算对于加、减、乘法封闭
(1)封闭性:对某个集合内任意两个元素进行某种运算,运算结果仍在该集合内
(2)对于集合 0 ⋯ 𝑀 − 1 ,该集合对𝑀取模的加、减、乘运算保持封闭
3.模运算同样具有加、减、乘法的交换律、结合律、分配律
乘法逆元
如果,则说明x为a的乘法逆元,用记号表示
当𝑀为质数,且𝑎不为𝑀的倍数时,𝑎的逆元一定存在
其余情况下,𝑎的逆元可能不存在
费马小定理:若𝑀为质数且𝑎不是𝑀的倍数,则有:
所以a的乘法逆元为