学习笔记:各种数学

持续更新,主要是在自己忘了时能来这看看

费马小定理

\(p\) 为素数且 \(gcd(a,p)=1\),则 \(a^{p-1}\equiv 1(\text{mod}\; p)\)

欧拉定理

\(gcd(a,m)=1\),则\(a^{\phi(m)} \equiv 1 \; ( \text{mod} \;m)\)

扩展欧拉定理

\(b \ge \phi(p)\)

\[a^b \equiv a^{b\;\text{mod} \;\phi(p)+\phi(p)} \; ( \text{mod} \;p) \]

扩展欧几里得

https://www.cnblogs.com/blue-tsg/p/16828622.html

Lucas定理

用于求解 \(n,m\) 很大但是 \(p\) 很小的时候

\[C(n,m)\equiv C(n/p,m/p)\times C(n\; \text{mod}\; p,m\; \text{mod}\; p)\;(\text{mod}\; p) \]

线性求逆元

\[inv_i=(-\frac{p}{i})\times inv_{p\;\text{mod} \;i} \]

中国剩余定理(crt)

\[ \begin{cases} x\equiv a_1\pmod {n_1}\\ x\equiv a_2\pmod {n_2}\\ \vdots\\ x\equiv a_k\pmod {n_k}\\ \end{cases} \]

其中 \(n_i\) 两两互质,求解最小正整数解 \(x\)

\(n=\prod_{i=1}^{n}n_i,m_i=\frac{n}{n_i},m_i^{-1}\)\(m_i\) 关于 \(n_i\) 的逆元

\[x=\sum_{i=1}^{k}a_i\times m_i\times m_i^{-1} \]

证明:
因为 对于任意 \(j\;(i\neq j)\),有 \(m_j\equiv 0\;\pmod {n_i}\) 所以有:

\[ \begin{align} x &\equiv \sum_{j=1}^ka_jc_j\pmod {n_i}\nonumber\\ &\equiv a_ic_i\pmod {n_i}\nonumber\\ &\equiv a_i\cdot(m_i\cdot m_i^{-1})\pmod {n_i}\nonumber\\ &\equiv a_i\pmod {n_i}\nonumber \end{align} \]

扩展中国剩余定理

\(n_i\) 不互质时,考虑两两合并方程

对于:

\[\begin{cases} a\equiv r_1 \pmod {m_1} \\ a\equiv r_2 \pmod {m_2} \end{cases} \]

有:

\[a=k_1m_1+r_1=k_2m_2+r_2 \]

即:

\[k_1m_1-k_2m_2=r_2-r_1 \]

\(\text{exgcd}\) 求解此不定方程和判断无解

对与求出的特解 \(x'\),通解 \(x=x'+k\times \text{lcm}(m_1,m_2)\)

所以两方程可以合并为 \(a\equiv x' \pmod {\text{lcm}(m_1,m_2)}\)

代码
ll r1,m1,r2,m2,n;
ll exgcd(ll a,ll b,ll &x,ll &y){
    if(!b){
        x=1;y=0;return a;
    }
    ll g=exgcd(b,a%b,y,x);
    y-=(a/b)*x;
    return g;
}
ll lcm(ll a,ll b){
    ll x,y;
    ll g=exgcd(a,b,x,y);
    return a/g*b;
}
ll solve(ll a,ll b,ll c){
    ll x,y;
    ll g=exgcd(a,b,x,y);
    if(c%g) return -1;
    b/=g;c/=g;
    return (x*c%b+b)%b;
}
void merge(){
    ll x=solve(m1,m2,r2-r1);
    if(x==-1){puts("-1");exit(0);}
    r1=x*m1+r1;
    m1=lcm(m1,m2);
    r1=(r1%m1+m1)%m1;
}
signed main(){
    n=read();
    for(int i=1;i<=n;i++){
        if(i==1) m1=read(),r1=read();
        else m2=read(),r2=read(),merge();
    }
    printf("%lld\n",(long long)r1);
    return 0;
}

BSGS

北上广深拔山盖世

解决如 \(a^x\equiv b \pmod p\),已知 \(a,b,p\ge 1,gcd(a,p)=1\),求 \(x\)

\(x=c\times t-d,t=\lceil\sqrt p \rceil\)

所以 \(a^{c\times t}\equiv b\times a^{d}\)

把右边的 \(b\times a^d \pmod p\)\(\operatorname{map}\)
左边枚举 \(c\) 查表就行了

代码
ll bsgs(ll a,ll b,ll p){
	map<ll,ll> mp; mp.clear();
	b%=p;a%=p;
	ll t=sqrt(p)+1;
	for(int i=0;i<t;i++){
		mp[1ll*b*qpow(a,i,p)%p]=i;
	}
	a=qpow(a,t,p);
	if(a==0) return b==0?1:-1;
	for(int i=1;i<=t;i++){
		ll val=qpow(a,i,p);
		if(mp.find(val)!=mp.end()){
			if(i*t-mp[val]>=0) return i*t-mp[val];
		}
	}
	return -1;
}

第二类斯特林数·行

定义:把 \(n\) 个不同的小球放进 \(m\) 个相同的盒子里的方案数,记作\(\begin{Bmatrix} n\\m\end{Bmatrix}\)\(S(n,m)\)

递推式:

\[S(n,m)=S(n-1,m-1)+m \times S(n-1,m) \]

相当于讨论第 \(n\) 个球放哪,若放入一个新盒子,所有新盒子等价,方案数为 \(S(n-1,m-1)\),若放入已经有球的盒子,因为小球不一样,放入不同的盒子方案是不一样的,所以乘个 \(m\)

容斥原理:

\[S(n,m)=\frac{1}{m!}\sum_{k=0}^{m}(-1)^k\times C(m,k) \times (m-k)^n \]

相当于枚举空盒个数 \(k\),剩下的随便放,最后要求 \(k=0\) 时的值,但是有重复(随便放也可能产生空盒),所以容斥一下

把组合数拆开再化简一下

\[\begin{aligned} S(n,m)&=\frac{1}{m!}\sum_{k=0}^{m}(-1)^k\times \frac{m!}{k!(m-k)!} \times (m-k)^n \\ &=\sum_{k=0}^{m}\frac{(-1)^k}{k!}\times \frac{(m-k)^n}{(m-k)!} \end{aligned} \]

这是个卷积形式,直接一个NTT可以在 \(n\log n\)复杂度内求解
\(S(n,0),S(n,1) \ldots S(n,n)\)

一些性质:

  1. \(n^k=\sum_{i=0}^{k}S(k,i)\times i! \times C(n,i)\)

Min_Max 容斥

\(max(S)\) 为集合 \(S\) 中的最大值,\(min(S)\) 为集合 \(S\) 中的最小值,\(∣S∣\) 为集合 \(S\) 的元素数量,那么以下两个等式成立

\[max(S)=\sum_{T\subseteq S}(-1)^{|T|+1}min(T) \\ min(S)=\sum_{T\subseteq S}(-1)^{|T|+1}max(T) \]

性质:

1.在期望下成立,即:

\[E(max(S))=\sum_{T\subseteq S}(-1)^{|T|+1}E(min(T)) \\ E(min(S))=\sum_{T\subseteq S}(-1)^{|T|+1}E(max(T)) \]

叉积

对于\(\vec{a}(x_1,y_1),\vec{b}(x_2,y_2)\)

\[a\times b=x_1y_2-x_2y_1 \]

\(P \times Q > 0\) , 则P在Q的顺时针方向。

\(P \times Q < 0\) , 则P在Q的逆时针方向。

\(P \times Q = 0\) , 则P与Q共线,但可能同向也可能反向。

向量的叉积与两两向量组成的平面垂直,方向用右手定则

叉积的模长几何意义是两个向量组成的平行四边形面积

二项式定理

\[(a+b)^k=\sum_{i=0}^{k} \dbinom{k}{i} a^ib^{k-i} \]

二项式反演

广义容斥原理

\(P_i\)为至少有\(i\)种性质的元素的元次,\(Q_i\)为恰好有\(i\)种性质的元素的元次,则

\[Q_k=\sum\limits_{i=k}^{n}(-1)^{i-k}\dbinom{i}{k}P_{i} \]

posted @ 2023-01-08 09:00  blue_tsg  阅读(40)  评论(0编辑  收藏  举报