这篇文章主要记录竞赛中的数学公式和结论
数列
Fibonacci
通项公式
- f(n)=51[(21+5)n−(21−5)n]
递推式
- f(n)=f(n−1)+f(n−2)
数论性质
- gcd(f(n),f(m))=f(gcd(n,m))
排列组合
排列数
错位排列
若序列 a 使得 ai=i 恒成立
则令组成该序列的不同方案数为 D(n)
则有:
- D(n)=(n−1)[D(n−1)+D(n−2)] 其中 $D(1)=0\ $ D(2)=1
组合数
卢卡斯定理
- Cmn≡Cm mod pn mod p⋅C⌊pm⌋⌊pn⌋(mod p)
概率论
期望
多个独立事件发生 件数 的期望
- p1+p2+p3+...+pn
数论
约数
正约数个数
令正整数 x 的正约数个数为 D(x)
x 的唯一分解形式为 x=p1x1⋅p2x2⋅... ⋅pnxn
则有:
- D(x)=(x1+1)(x2+1)...(xn+1)
质因数
质数之积
两个质数之积一定为合数,因为这两个数本身就可以作为因子
n!
质因子 p 在 n! 中出现的个数为 pk⩽n∑⌊pkn⌋
1 2 3 4 5 6 7 8
| int count(int x, int a){ int sum = 0; while(x){ sum += x / a; x /= a; } return sum; }
|
若要求出区间 i=l∏r 中质因子 p 的个数,只需要得出 count(r)−count(l−1) 的结果即可