数学小知识点整理(TBC)

前言

感觉距离 s c o i 2019 scoi2019 scoi2019的时间不多了博主因为太弱所以现在慌得一批,现在尝试梳理一些小知识点顺便复习。

素数与同余

线性筛部分

常识向,直接贴代码了,大佬们手动跳过吧。
最常用的是线性筛质数。
同时有两种常用的可以线性筛预处理的函数:莫比乌斯函数,欧拉函数。
线性筛代码:

typedef long long ll;
ll prime[N],pri[N],cnt=0,mu[N],phi[N];
inline void init(int len){
	mu[1]=phi[1]=1;
	for(int i=2;i<=len;++i){
		if(!pri[i])prime[++cnt]=i,mu[i]=-1,phi[i]=i-1;
		for(int j=1;i*prime[j]<=len;++j){
			pri[i*prime[j]]=1;
			if(i%prime[j]==0){
				phi[i*prime[j]]=phi[i]*prime[j];
				mu[i*prime[j]]=0;
				break;
			}
			mu[k]=-mu[i];
			phi[k]=phi[i]*(prime[j]-1);
		}
	}
}

素数

在这里插入图片描述

线性递推逆元

在这里插入图片描述

指数循环节降幂

在这里插入图片描述

当求逆元时模数与求逆元的数有可能不互质时的处理方法

在这里插入图片描述

一个神奇的结论

有个结论,对于 m >= 2,与m的互质的数的和为m * phi (m) / 2

拓展欧拉定理

在这里插入图片描述

杂乱的一些性质/技巧

二进制枚举子集

这是一个用循环实现的快速枚举子集的方法,代码如下:

for(int i=s;i;i=s&(i-1))

异或前缀和

一个蒟蒻博主听说可以打表证明的性质:
s u m i = i , i ≡ 0 m o d &ThinSpace;&ThinSpace; 4 sum_i=i,i\equiv0 \mod4 sumi=i,i0mod4
s u m i = 1 , i ≡ 1 m o d &ThinSpace;&ThinSpace; 4 sum_i=1,i\equiv1 \mod4 sumi=1,i1mod4
s u m i = i + 1 , i ≡ 2 m o d &ThinSpace;&ThinSpace; 4 sum_i=i+1,i\equiv2 \mod4 sumi=i+1,i2mod4
s u m i = 0 , i ≡ 3 m o d &ThinSpace;&ThinSpace; 4 sum_i=0,i\equiv3 \mod4 sumi=0,i3mod4
感觉挺有用的

O(n)预处理popcount

p o p c o u n t ( x ) popcount(x) popcount(x) x x x在二进制形式中二进制位为 1 1 1的数量。
直接处理是 O ( l o g x ) O(log_x) O(logx)的,但是可以 O ( a m a x ) O(a_{max}) O(amax)预处理。
代码:

for(int i=1;i<=lim;++i)Popcount[i]=Popcount[i>>1]+(i&1);

原理很简单(逃

多项式一类

因为太多之前特意写了一篇博客 才不是骗访问量呢

组合数学

卡特兰数通项

C a t n = C 2 n n − C 2 n n − 1 = C 2 n n n + 1 Cat_n=C_{2n}^n-C_{2n}^{n-1}=\frac{C_{2n}^n}{n+1} Catn=C2nnC2nn1=n+1C2nn

斯特林数

两类可以用 f f t fft fft预处理做到 O ( n l o g n ) O(nlogn) O(nlogn)
但是一般都只用 O ( n 2 ) O(n^2) O(n2)(雾
下面给出递推式:
第一类斯特林数递推式:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
第二类斯特林数递推式:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第一类斯特林数详细小结
第二类斯特林数详细小结

错排公式

看了这道题你就懂了。
递推式: f i = ( i − 1 ) ( f i − 1 + f i − 2 ) f_i=(i-1)(f_{i-1}+f_{i-2}) fi=(i1)(fi1+fi2)

二项式反演

f n = ∑ i = 0 n ( n i ) g i f_n=\sum_{i=0}^n\binom{n}{i}g_i fn=i=0n(in)gi
=> g n = ∑ i = 0 n ( ( − 1 ) i ( n n − i ) f i ) g_n=\sum_{i=0}^n((-1)^i\binom{n}{n-i}f_i) gn=i=0n((1)i(nin)fi)
可以看这道题简单体会一下。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值