前置数学

一些必要 trick#

  1. 推式子,先提 Π 到最前面,然后从后往前合并,必要时考虑更改 的取值
  2. 看到次方变为斯特林数,xn=i=0n{ni}(xi)i!=i=0ni=1m(1)miin(mi)!(xi)
  3. 注意莫反、欧反的形式

前置数学知识#

函数#

指数函数#

y=ax

无标题.png

对数函数#

y=logax

xab=xab

logax+logay=logaxy

对数函数.png
对指数函数关于直线 y=x 对称
指数对数关于y=x对称.png

离散数学#

集合#

S={1,2,3,5}

x=3,xS

y=4,yS

S={1,2,3},SS

S={1,2,4},SS

空集ϕ为任何非空集的子集。

映射#

  • 两个集合中每一个元素都有相对应的元素,称为满射
  • 两个集合中其中两个元素仅与另一个元素对应,称为单射
  • 两个集合中所有元素一一对应,称为一一映射(双射)
  • 两个集合等势,即可形成一一映射(双射)。
    例:x|1x2y|2y5 等势。

数列#

a={2,3,4,4,2}

则 a1=2,a2=3,a3=3,a4=4,a5=2

  • 等差数列:

an=a1+(n1)d

i=1nai=(a1+an)n2

  • 等比数列:

an=a1qn1

i=1nai=a1(1qn)1q

数论#

最大公约数#

gcd(a,b)=gcd(b,amodb)

最小公倍数#

lcm(a,b)=xygcd(x,y)

lcm(x,y)gcd(x,y)=xy

裴蜀定理#

  • 内容:设 a,b 是不全为零的整数,对任意整数 x,y,满足 gcd(a,b)ax+by,且存在整数 x,y, 使得 ax+by=gcd(a,b).
  • 逆定理:设 a,b 是不全为零的整数,如果 d>0a,b 的公因数,且存在整数 x,y,使得 ax+by=d,那么 d 就是最大公因数 gcd(a,b)
  • 推广:设a1,a2,...,an 是不全为零的整数,一定存在整数 x1,x2,...,xn,使得 a1x1+a1x2+...+anxn=gcd(a1,a2,...,an)
  • 推论:方程 ax+by=nn>abab 时总有解,n=abab 是最大无解情况
  • 裴蜀定理进一步结论:
    gcd(a,b)=1,对于方程 ax+by=n,设C=abab,则 n,Cn有且仅有一个有非负数解,且有如下关系:
n 的值域 有非负数解
(,0) 0
0 1
(0,C)
C 0
(C,) 1

欧几里得引理(Euclid's lemma)

  • 内容
    c|ab,gcd(a,c)=1c|b.

p|abp|ap|b.

证明

裴蜀定理au+cv=1.

aub+cvb=b.

cb.

拓展欧几里得#

根据以下两个定理,可以求出线性同余方程 axb(modn) 的解。

定理 1:线性同余方程 axb(modn) 可以改写为如下线性不定方程:

ax+nk=b

其中 x 和 k 是未知数。这两个方程是等价的,有整数解的充要条件为 gcd(a,n)|b

应用扩展欧几里德算法可以求解该线性不定方程。根据定理 1,对于线性不定方程 ax+nk=b,可以先用扩展欧几里得算法求出一组 x0,k0,也就是 ax0+nk0=gcd(a,n),然后两边同时除以 gcd(a,n),再乘 b。就得到了方程

abgcd(a,n)x0+nbgcd(a,n)k0=b

于是找到方程的一个解。

定理 2:若 gcd(a,n)=1,且 x0k0 为方程 ax+nk=b 的一组解,则该方程的任意解可表示为:

x=x0+nt

k=k0at

并且对任意整数 t 都成立。

根据定理 2,可以从已求出的一个解,求出方程的所有解。实际问题中,往往要求出一个最小整数解,也就是一个特解

x=(xmodt+t)modt

其中有

t=ngcd(a,n)

如果仔细考虑,用扩展欧几里得算法求解与用逆元求解,两种方法是等价的。


这里的 q 不需要为素数

求解 gcd(a,b) 及满足 ax+by=gcd(a,b) 的整数解.

i 步带余除法得的商为 qi,余数为 ri.

扩展欧几里得算法可以写成:

r0=a,r1=b.

s0=1,s1=0.

t0=0,t1=1.

ri+1=ri1riqi.

si+1=si1siqi.

ti+1=ti1tiqi.

x=sn,y=tn,(ri+1=riqi).

唯一分解定理#

  • 内容
    任意一个正整数 a2,必然有且仅有一种形如 p1α1p2α2p3α3pkαk 的分解方法,其中,pi<pi+1αi 为正整数,0<ik.
证明

m 为最小的不满足此定理的 am 的两种表示方法为:

p1α1p2α2p3α3pkαk

q1β1q2β2q3β3qgβg

p1q1β1q2β2q3β3qgβg,由欧几里得引理p1qj (不妨把这个 qj 设为 q1 ),由于 q1 是个质数,所以 p1=q1,那么设数 n=mp1=mq1,很明显 n<m,又发现 n 可以表示为:

p1α11p2α2p3α3pkαk

q1β11q2β2q3β3qgβg

所以 m 不是最小的不满足此定理的 a.

欧拉筛#

欧拉函数

  • 定义

φ(a)=i=1n[gcd(i,n)=1]

  • 计算公式

φ(a)φ(b)=φ(ab),gcd(a,b)=1.

φ(p)=p1.

φ(pk)=pkpk+1.

同余类#

n 同余的数构成 n 的一个同余类.又称“剩余类”,同余类中的每个元素都可以拿来代表该同余类,称为该同余类的代表数.

剩余系#

从构成 n 的不同同余类中取各一个数组成的集合,它们互不同余.

完全剩余系,最小剩余系和简约剩余系#

完全剩余系是从构成 n 的每个同余类中取各一个数组成的集合.(n 个元素)

如果里面的每个元素都是该同余类中最小的非负整数,称它为最小剩余系.(n 个元素)

将完全剩余系中去掉与模 n 不互素的元素,得到简约剩余系.(φ(n) 个元素)

完全剩余系的性质#

  • 内容
    An 的一个完全剩余系,且 gcd(a,b)=1,则 aA+b 也是 n 的一个完全剩余系.

同余#

ab(modp),则a=b+kp(kZ)

费马小定理#

ap11(modp).

apa(modp).

其中第一行需要 gcd(a,p)=1.

欧拉函数#

欧拉函数(Euler's totient function),即 φ(n),表示的是小于等于 n 的数中与 n 互质的数字个数,

例如 φ(1)=1

性质

1. 欧拉函数是积性函数。

   积性函数的意思是:如果有 gcd(a,b)=1,那么则有 φ(a)=φ(a)×φ(b)

   特别的,当 n 为奇数时,φ(2n)=φ(n)

2.n 为质数时,有 φ(n)=n1

3. n>1,1~N 中所有与 n 互质的数的和为 nφ(n)2

证明

根据更相相减法,因为 gcd(n,x)=gcd(n,nx),所以予 n 互质的数 x,nx 成对出现,平均值为 n2,故和为 nφ(n)2

4.p 为质数,则 φ(pk)=pkpk1

证明

因为 p 为质数,所以与 p 不互质的数就只能为 p 的倍数,共 pk1 个。所以减去这些就是 φ(n) 的值。

5.p 为质数,若 p|np2|n,则 φ(n)=φ(np)p;若p为质数,若 p|np2n,则 φ(n)=φ(np)(p1)

证明

第一条:因为 nnp 的质因子相同,只是 p 的指数不同。所以 φ(n)φ(np)=p,即可得原式。

第二条:根据性质一,即欧拉函数为积性函数,可得 φ(n)=φ(np)φ(p),因为 p 为质数,由性质二可得原式。

6. n=d|nφ(d)

证明如下图:

用法

举个栗子:The Euler function

题意:求i=abφ(i)

如果枚举必定 TLE

方法一:

用埃氏筛,由欧拉函数的展开式 φ(N)=NpN(p1p)

对于筛出的每个质数 p,将 p 的倍数的欧拉函数值除以 p 再乘 p1 即可。

时间复杂度 O(NlogN)

#include<bits/stdc++.h>
#define int long long
#define endl "\n"
template<typename P>
inline void read(P &x){
   	P res=0,f=1;
   	char ch=getchar();
   	while(ch<'0' || ch>'9'){
   		if(ch=='-') f=-1;
   		ch=getchar();
   	}
   	while(ch>='0' && ch<='9'){
   		res=res*10+ch-'0';
   		ch=getchar();
	}
	x=res*f;
}
using namespace std;
const int N=3000005;
int a[N],b[N],tot=1,maxn;
int phi[N];
void initprime(int n){
	for(int i=2;i<=n;i++) phi[i]=(int)i;
	for(int i=2;i<=n;i++) if(phi[i]==(int)i)
		for(int j=i;j<=n;j+=i) phi[j]/=(int)i,phi[j]*=(int)(i-1);
	for(int i=1;i<=n;i++) phi[i]+=phi[i-1];
}
signed main(){
	auto solve=[&](){
		while(scanf("%d%d",&a[tot],&b[tot])!=EOF) maxn=max(maxn,b[tot]),tot++;
		initprime(maxn);
		for(int i=1;i<tot;i++) printf("%lld\n",phi[b[i]]-phi[a[i]-1]);
		return;
	};
	return 0;
}

方法二自己搜,不想写了。

欧拉定理#

gcd(a,n)=1 时:

aφ(n)1(modn).

乘法逆元#

如果一个线性同余方程 ax1(modb),则 x 称为 amodb 的逆元,记作 a1

  • 扩展欧几里得法
void exgcd(int a, int b, int& x, int& y) {
  if (b == 0) {
    x = 1, y = 0;
    return;
  }
  exgcd(b, a % b, y, x);
  y -= a / b * x;
}

扩展欧几里得法和求解线性同余方程是一个原理,在这里不展开解释。

  • 快速幂法

因为 ax1(modb)

所以 axab1(modb)(根据 费马小定理);

所以 xab2(modb)

int qpow(long long a, int b) {
  int ans = 1;
  a = (a % p + p) % p;
  for (; b; b >>= 1) {
    if (b & 1) ans = (a * ans) % p;
    a = (a * a) % p;
  }
  return ans;
}

注意:快速幂法使用了 费马小定理,要求 b 是一个素数;而扩展欧几里得法只要求 gcd(a,b)=1

约数数量#

(k1+1)×(k2+1)×...×(kn+1)

i=1nki+1

约数和#

i=1nj=1pikj

容斥原理#

容斥原理图.png

ABC=A+B+CABACBC+ABC

排列组合#

  • 定义:
    n 个数中选 m 个数考虑顺序组合方法数:

Anm=n!(nm)!

  • 定义:
    n 个数中选 m 个数不考虑顺序组合方法数:

Cnm=n!m!(nm)!

Cn+1k=Cnk+Cnk1

卡特兰数#

该递推关系的解为:

Hn=(2nn)n+1(n2,nN+)

关于 Catalan 数的常见公式:

Hn={i=1nHi1Hnin2,nN+1n=0,1Hn=Hn1(4n2)n+1Hn=(2nn)(2nn1)

二项式定理#

在进入排列组合进阶篇之前,我们先介绍一个与组合数密切相关的定理——二项式定理。

二项式定理阐明了一个展开式的系数:

(a+b)n=i=0n(ni)anibi

证明可以采用数学归纳法,利用
(nk)+(nk1)=(n+1k) 做归纳。

二项式定理也可以很容易扩展为多项式的形式:

n 为正整数,xi 为实数,

满足的非负整数解

(x1+x2++xt)n=n1++nt=n(nn1,n2,,nt)x1n1x2n2xtnt

其中的
(nn1,n2,,nt) 是多项式系数,它的性质也很相似:

(nn1,n2,,nt)=tn

第二类斯特林数#

  • 定义:
    将n个不同的元素拆分成m个集合的方案数,记为:

S(n,m)

  • 性质:

S(n,0)=0

S(n,1)=1

S(n,n)=1

S(n+1,m)=S(n,m1)+mS(n,m)

复数#

  • 形如 i=1

便能有 i2=1

在复实数坐标轴上,一个点表示为 A=a+bi同等转化到笛卡尔坐标系,相当于 A(a,bi)
复数概述图.png

  • 复数运算定义为:

A=a+biB=c+diA+B=a+c+bi+diABABAB

概率与期望#

概率#

  • 概率一般用 P 表示
  • 性质:

1.单调性:ABP(A)P(B)

2.容斥原理:P(A+B)=P(A)+P(B)P(AB)

3.P(A+B)=P(A)P(AB)AB

  • P(B|A)=P(B|A)P(B)P(A)

期望#

  • 期望一般用 E 表示
  • 性质:

1.线性性:若随机变量 X,Y 的期望存在,则

对任意实数 a,b,有 E(aX+b)=aEX+b

E(X+Y)=E(X)+E(Y)

2.随机变量乘积的期望

若随机变量 X,Y 的期望存在且 X,Y 相互独立,则有

E(XY)=EXEY

注意:上述性质中的独立性 并非 必要条件。

期望与概率的转化#

对于随机事件 A,考虑其示性函数 IA

IA(ω)={1,ωA0,ωA

根据定义可以求得其期望 EIA=P(A)。这一转化在实际应用中非常常见。

方差#

定义

设随机变量 X 的期望 EX 存在且期望

E(XEX)2

也存在,则称上式的值为随机变量 X 的 方差,记作 DXVar(x)。方差的算术平方根称为标准差,记作 σ(X)=DX

方差的性质

若随机变量 X 的方差存在,则

对任意常数 a,b 都有 D(aX+b)=a2DX

DX=E(X2)(EX)2

协方差与相关系数

一般来说,等式 D(X+Y)=DX+DY 并不成立,我们自然会提出两个问题:

D(X+Y)DX+DY 之间相差的部分到底是什么。
D(X+Y)DX+DY 在什么情况下相等。
对于第一个问题,我们引入协方差作为解答。

协方差的定义#

对于随机变量 X,Y,称

E((XEX)(YEY))

XY协方差,记作 Cov(X,Y)

协方差的性质

对于随机变量 X,Y,Z,有

Cov(X,Y)=Cov(Y,X)

对任意常数 a,b,有 Cov(aX+bY,Z)=aCov(X,Z)+bCov(Y,Z)

同时协方差与方差也有如下联系:

DX=Cov(X,X)

对于刚才提出的第二个问题,不难看出 D(X+Y)=DX+DY 当且仅当 Cov(X,Y)=0。一个直观的必要条件是 XY 独立,因为此时有

Cov(X,Y)=E((XEX)(YEY))=E(XEX)E(YEY)=0

但这个条件并不是充分的。为了描述满足 Cov(X,Y)=0 的随机变量 X,Y 之间的关系,我们引入相关系数

平面向量#

  • 意义:

表示为一条有长度的线段,通常表示移动一段距离,通常形式为 a=AB

  • |AB| 表示为向量 a 的距离(或长度)

平面向量.png

如上图中,能得出向量加减定则

AC+AD=ABABAD=ACABAC=AD

  • 乘法定则

E1E2=|E1||E2|cos<E1,E2>

运用:例,求 BD

例题1.png

BD=BA+AD=BA+13AC=BA+13(AB+BC)=23BA+13BCBDBD=(23AB+13AC)2=49AB2+49ABAC+19AC2=4+103+259=919BDBD=|BD|2=919BD=913

数学万恶之源

作者:God_Max_Me

出处:https://www.cnblogs.com/lizihan00787/p/18685873

版权:本作品采用「God_Max_Me-非商业性使用」许可协议进行许可。

posted @   God_Max_Me  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示