数学与数论

部署运行你感兴趣的模型镜像

数学与数论

目录

  1. 常见数学符号

  2. 数列求和

  3. 快速幂

  4. 整除

  5. 组合计数

常见数学符号

数理逻辑

  • 与、或、非

p∧q,p∨q,p¬qp \wedge q \text{,} p \vee q \text{,} p \neg qpqpqp¬q

  • 蕴含、等价于

p⟹q,p⟺qp \Longrightarrow q \text{,} p \Longleftrightarrow qpqpq

关系

  • 等于、不等于、约等于

a=b,a≠b,a≈ba = b \text{,} a \neq b \text{,} a \approx ba=ba=bab

  • 小于、大于、小于等于、大于等于

a<b, a>b, a≤b, a≥ba < b \text{, } a > b \text{, } a \leq b \text{, } a \ge ba<b a>b ab ab

  • 整除、互素、同余

a∣b, a⊥b, a≡b(modm)a \mid b \text{, } a \perp b \text{, } a \equiv b \pmod{m} ab ab ab(modm)

运算符

  • 加、减、乘、除

a+b,a−b,a×b,a÷ba + b \text{,} a - b \text{,} a \times b \text{,} a \div ba+baba×ba÷b

  • 加或减

a±ba \pm ba±b

  • 次方

aba ^ bab

  • 开根

an\sqrt[n]{a}na

  • 绝对值

∣a∣\mid a \mida

  • 取整

⌊a⌋,⌈b⌉ \lfloor a \rfloor \text{,} \lceil b \rceilab

  • 取模

a mod ba \bmod bamodb

  • 最值

min(a,b),max(a,b)min(a, b) \text{,} max(a, b)min(a,b)max(a,b)

  • 最大公因数、最小公倍数

gcd⁡(a,b),lcm⁡(a,b)\gcd(a, b) \text{,} \operatorname{lcm}(a, b)gcd(a,b)lcm(a,b)

  • 求和

∑i=1nai=a1+a2+⋯+an\sum_{i = 1}^{n} a_i = a_1 + a_2 + \cdots + a_ni=1nai=a1+a2++an

  • 求积

∏i=1nai=a1×a2×⋯×an\prod_{i = 1}^{n} a_i = a_1 \times a_2 \times \cdots \times a_ni=1nai=a1×a2××an

集合

  • 属于、不属于

x∈S,x∉Sx \in S \text{,} x\notin SxSx/S

  • 元素个数、空集

∣S∣,∅\mid S \mid \text{,} \emptysetS

  • 包含、真包含

A⊆B,A⊂BA \subseteq B \text{,} A \subset BABAB

  • 并集、交集、差集

A∪B,A∩B,A∖BA \cup B \text{,} A \cap B \text{,} A \setminus BABABAB

标准数集和区间

  • 自然数集、整数集、有理数集、实数集、复数集、素数集

N,Z,Q,R,C,P\mathbb{N} \text{,} \mathbb{Z} \text{,} \mathbb{Q} \text{,} \mathbb{R} \text{,} \mathbb{C} \text{,} \mathbb{P}NZQRCP

  • 闭区间、开区间、左开右闭区间、左闭右开区间

[a,b],(a,b),(a,b],[a,b)[a, b] \text{,} (a, b) \text{,} (a, b] \text{,} [a, b)[a,b](a,b)(a,b][a,b)

  • 无穷大

∞\infty

指数和对数函数

  • 自然对数

e=lim⁡n→∞(1+1n)n=2.7188128⋯e = \lim_{n \to \infty} (1 + \frac{1}{n}) ^ n = 2.7188128 \cdotse=nlim(1+n1)n=2.7188128

  • xxx 的以 aaa 为底的对数

log⁡ax\log_axlogax

  • xxx 的自然对数

ln⁡x\ln xlnx

  • xxx 的常用对数

lg⁡x\lg xlgx


数列求和

  • 等差数列求和:

假设等差数列的首项为 a1a_1a1,末项为 ana_nan,项数为 nnn,那么等差数列的和为:

Sn=n(a1+an)2S_n = \frac{n(a_1 + a_n)}{2}Sn=2n(a1+an)

假设等差数列的首项为 a1a_1a1,项数为 nnn,公差为 ddd,那么等差数列的和为:

Sn=a1n+n(n−1)2dS_n = a_1n + \frac{n(n - 1)}{2}dSn=a1n+2n(n1)d

  • 等比数列求和:

假设等比数列的首项为 a1a_1a1,项数为 nnn,公比为 qqq,那么等比数列的和为:

Sn=a1(1−qn)1−qS_n = \frac{a_1(1 - q ^ n)}{1 - q}Sn=1qa1(1qn)

假设等比数列的首项为 a1a_1a1,有无穷项,公比为 qqq,那么等比数列的和(若存在)为:

Sn=a1−anq1−qS_n = \frac{a_1 - a_nq}{1 - q}Sn=1qa1anq

快速幂

计算:xymod  zx ^ y \mod zxymodz

inline [type] qpow([type] x, int y, const int z){
    [type] ans = 1;
    while (y){
        if (y & 1) ans = ans * x % z;
        x = x * x % z, y >>= 1;
    }
    return ans;
}

整除

假设 nnn 为非负整数,ddd 为正整数,aaabbb 为非负整数:

  • nd\frac{n}{d}dn 为整数,则称 ddd 整除 nnn,写作 d∣nd \mid ndn。此时 ddd 被称为 nnn约数,而 nnn 被称为 ddd倍数

  • d∣ad \mid adad∣bd \mid bdb,则称 dddaaabbb公约数最大公约数aaabbb 的所有公约数中最大的数,常记作 gcd(a,b)gcd(a, b)gcd(a,b)(当 gcd(a,b)=1gcd(a, b) = 1gcd(a,b)=1 时,我们称 aaabbb互素 关系)

辗转相除法求最大公约数

a=b×k+ca = b \times k + ca=b×k+cbbb 不能整除 aaa),dddaaabbb 的公约数:

∵c=a mod b<b\because c = a \bmod b < bc=amodb<b

∴c=a−bk\therefore c = a - bkc=abk

∵d∣a&d∣b\because d \mid a \And d \mid bda&db

∴cd=ad−bdk\therefore \frac{c}{d} = \frac{a}{d} - \frac{b}{d}kdc=dadbk

∴cd∈Z\therefore \frac{c}{d} \in \mathbb{Z}dcZ

∴d∣(a mod b)→d∣b&d∣(a mod b)\therefore d \mid (a \bmod b) \rightarrow d \mid b \And d \mid (a \bmod b)d(amodb)db&d(amodb)

反之,假设 d∣b&d∣(a mod b)d \mid b \And d \mid (a \bmod b)db&d(amodb),也可证明其是 aaabbb 的公约数

可得 aaabbbb,(a mod b)b, (a \bmod b)b,(amodb) 的最大公约数相等
gcd⁡(a,b)=gcd⁡(b,a mod b)\gcd(a, b) = \gcd(b, a \bmod b)gcd(a,b)=gcd(b,amodb)

inline [type] gcd([type] x, [type] y){
    return !y ? x : gcd(y, x % y);
}
  • a∣da \mid dadb∣db \mid dbd,则称 dddaaabbb公倍数最小公倍数aaabbb 的所有公倍数中最小的数,常记作 lcm⁡(a,b)\operatorname{lcm}(a, b)lcm(a,b)

lcm⁡(a,b)=a×bgcd⁡(a,b)\operatorname{lcm}(a, b) = \frac{a \times b}{\gcd(a, b)}lcm(a,b)=gcd(a,b)a×b

inline [type] lcm([type] x, [type] y){
    return x * y / gcd(x, y);
}

素数

对于一个整数 n≥2n \ge 2n2,若所有满足 1<k<n1 < k < n1<k<n 的整数 kkk 都不是 nnn 的约数,那么称 nnn素数

判断素数

时间复杂度:O(n)O(\sqrt{n})O(n)

inline bool check([type] x){
    if (x == 1) return 0;
    for ([type] i = 2; i * i <= x; ++i) if (!(x % i)) return 0;
    return 1;
}

素数的分布

定义 π(x)\pi(x)π(x) 表示小于等于 xxx 的素数的个数,其中:

π(x)∼xln⁡(x)\pi(x) \sim \frac{x}{\ln(x)}π(x)ln(x)x

即小于等于 nnn 的正整数中有 O(nlog⁡n)O(\frac{n}{\log n})O(lognn) 个数为素数数

素数筛

方法一:对于 1∼N1 ∼ N1N 的每个正整数判断是否为素数。时间复杂度为 O(nn)O(n \sqrt{n})O(nn) ,效率最低

方法二:埃式筛法:对于 2∼n2 ∼ n2n 的每个正整数 xxx,若 xxx 为素数,则标记所有大于 xxx 小于 nnnxxx 的倍数。枚举到 xxx 时,若 xxx 没有被标记,则 xxx 为素数,其时间复杂度为 O(nlog⁡log⁡n)O(n \log \log n)O(nloglogn)

inline void sieve([type] N){
    memset(P, 1, sizeof(P)), P[0] = P[1] = 0;
    for ([type] i = 2; i < N; ++i){
        if (!P[i] || i * i >= N) continue;
        for ([type] j = i * i; j < N; j += i) P[j] = 0;
    }
}

方法三:线性筛:从埃氏筛法改进而来,使每个合数只被它的最小质因数筛去,这样就能保证每个合数只被筛一次。比如埃氏筛法中 666 在已经被 222 筛去的情况下又被 333 筛了一遍,而我们希望 666 只被 222 筛去。这样就可以将整个算法的时间复杂度从 O(nlog⁡log⁡n)O(n \log \log n)O(nloglogn) 降到 O(n)O(n)O(n)

inline void sieve([type] N){
    for (int i = 2; i <= N; ++i){
        if (!vis[i]) ++cnt, P[cnt] = i;
        for (int j = 1; j <= cnt && i * P[j] <= N; ++j){
            vis[i * P[j]] = 1;
            if (!(i % P[j])) break;
        }
    }
}

唯一分解定理

假设 n≥2∈Zn \ge 2 \in \mathbb{Z}n2Z,则有唯一的分解式:

n=∏i=1mpikin = \prod_{i = 1}^{m} p_i^{k_i}n=i=1mpiki

其中,p1<p2<⋯<pm∈Pp_1 < p_2 < \cdots < p_m \in \mathbb{P}p1<p2<<pmPki∈N>0k_i \in \mathbb{N} > 0kiN>0

该分解式也常被人称为 质因数分解

vector<int> factor(int N){
    vector<int> F;
    for (int i = 1; i <= P[0]; ++i) {
        if (P[i] * P[i] > N) break;
        while (N % P[i] == 0) F.push_back(P[i]), N /= P[i];
    }
    if (N > 1) f.push_back(N);
    return F;
}

预处理复杂度:O(n)O(\sqrt{n})O(n),单词查询复杂度:O(nln⁡n)O(\frac{\sqrt{n}}{\ln n})O(lnnn)

模运算与同余

aaabbb 为正整数,则 a mod b=a−⌊ab⌋ba \bmod b = a - \lfloor \frac{a}{b} \rfloor bamodb=abab

(a−b) mod n=0(a - b) \bmod n = 0(ab)modn=0,则称 aaabbb 同余,记作:

a≡b(modn)a \equiv b \pmod{n} ab(modn)

根据模运算,我们可以得到下列等式:

  • (a+b) mod p=(a mod p+b mod p) mod p(a + b) \bmod p = (a \bmod p + b \bmod p) \bmod p(a+b)modp=(amodp+bmodp)modp

  • (a−b) mod p=(a mod p−b mod p+p) mod p(a - b) \bmod p = (a \bmod p - b \bmod p + p) \bmod p(ab)modp=(amodpbmodp+p)modp

  • ab mod p=((a mod p)×(b mod p)) mod pab \bmod p = ((a \bmod p) \times (b \bmod p)) \bmod pabmodp=((amodp)×(bmodp))modp

  • ab mod p=(a mod p)b mod pa ^ b \bmod p = (a \bmod p) ^ b \bmod pabmodp=(amodp)bmodp

裴蜀定理

aaabbb 是不全为 000 的整数,则必定存在整数 xxxyyy,满足不定方程 ax+by=gcd⁡(a,b)ax + by = \gcd(a, b)ax+by=gcd(a,b)

求解该不定方程,需要使用 扩展欧几里得算法

b=0b = 0b=0 时,原方程转换为 ax=gcd⁡(a,0)=a→x=1ax = \gcd(a, 0) = a \rightarrow x = 1ax=gcd(a,0)=ax=1

b≠0b \ne 0b=0 时,由于 gcd⁡(a,b)=gcd⁡(b,a mod b)\gcd(a, b) = \gcd(b, a \bmod b)gcd(a,b)=gcd(b,amodb),因此我们希望找到一对 (x’,y’)(x’, y’)(x,y),满足:

bx′+(a mod b)y′=gcd⁡(b,a mod b)bx' + (a \bmod b)y' = \gcd(b, a \bmod b)bx+(amodb)y=gcd(b,amodb)

对于原方程,根据 a=⌊ab⌋b+a mod ba = \lfloor \frac{a}{b} \rfloor b + a \bmod ba=bab+amodb 代入可得:

(⌊ab⌋b+a mod b)x+by=gcd⁡(a,b)(\lfloor \frac{a}{b} \rfloor b + a \bmod b)x + by = \gcd(a, b)(⌊bab+amodb)x+by=gcd(a,b)

整理可得:

b(⌊ab⌋x+y)+(a mod b)x=gcd⁡(b,a mod b)b(\lfloor \frac{a}{b} \rfloor x + y) + (a \bmod b)x = \gcd(b, a \bmod b)b(⌊bax+y)+(amodb)x=gcd(b,amodb)

综合两个式子:

{bx′+(a mod b)y′=gcd⁡(b,a mod b)b(⌊ab⌋x+y)+(a mod b)x=gcd⁡(b,a mod b) \begin{cases} bx' + (a \bmod b)y' = \gcd(b, a \bmod b) \\ b(\lfloor \frac{a}{b} \rfloor x + y) + (a \bmod b)x = \gcd(b, a \bmod b) \end{cases} {bx+(amodb)y=gcd(b,amodb)b(⌊bax+y)+(amodb)x=gcd(b,amodb)

比较系数可得:

{x=y′y=x′−⌊ab⌋x \begin{cases} x = y' \\ y = x' - \lfloor \frac{a}{b} \rfloor x \end{cases} {x=yy=xbax

因此可以递归求解:

inline [type] exgcd([type] a, [type] b, [type] &x, [type] &y){
    if (!b){
        x = 1, y = 0;
        return a;
    }
    [type] d = exgcd(b, a % b, x, y);
    [type] t = x;
    x = y, y = t - (a / b) * y;
    return d;
}
乘法逆元

实际上,我们求出的 xxx 被称作 a mod ba \bmod bamodb 的逆元,记作 a−1a ^ {-1}a1。当 xxxbbb 互素时,存在唯一的 xxx 的逆元。当 bbb 是素数时,所有不是 bbb 的倍数的整数都有唯一的逆元。

使用乘法逆元可以帮助我们完成模意义下的除法运算:

ab≡a×b−1(modp)\frac{a}{b} \equiv a \times b ^ {-1} \pmod{p}baa×b1(modp)

欧拉函数

φ(i)\varphi(i)φ(i) 表示,小于等于 iii 的正整数中,与 iii 互质的数的个数

欧拉函数具有以下的性质:

  • φ(pk)=pk−pk−1\varphi(p^k) = p^k - p^{k - 1}φ(pk)=pkpk1p∈Pp \in \mathbb{P}pP

  • 欧拉函数是 积性函数,即若 gcd⁡(a,b)=1\gcd(a, b) = 1gcd(a,b)=1,则有 φ(a)×φ(b)=φ(a×b)\varphi(a) \times \varphi(b) = \varphi(a \times b)φ(a)×φ(b)=φ(a×b)

  • 欧拉反演:∑d∣nφ(d)=n\sum_{d \mid n} \varphi(d) = ndnφ(d)=n

欧拉函数的计算:

如果只需求出 φ(n)\varphi(n)φ(n):求出 nnn 的唯一分解 n=∏i=1mpikin = \prod_{i = 1}^{m} p_i^{k_i}n=i=1mpiki

根据积性,φ(n)=∏i=1mφ(piki)\varphi(n) = \prod_{i = 1}^{m} \varphi(p_i^{k_i})φ(n)=i=1mφ(piki),根据 φ(pk)=pk−pk−1\varphi(p^k) = p^k - p^{k - 1}φ(pk)=pkpk1 可求

若需批量求出 φ(n)\varphi(n)φ(n) 可以利用到线性筛:

pppiii 的最小质因子,则分三种情况:

  • iii 是素数,则 φ(i)=i−1\varphi(i) = i - 1φ(i)=i1

  • pppip\frac{i}{p}pi 的质因子,则 φ(i)=φ(ip)×p\varphi(i) = \varphi(\frac{i}{p}) \times pφ(i)=φ(pi)×p

  • pppip\frac{i}{p}pi 互素,则 φ(i)=φ(ip)×φ(p)\varphi(i) = \varphi(\frac{i}{p}) \times \varphi(p)φ(i)=φ(pi)×φ(p)

inline void euler([type] N) {
    E[1] = 1;
    for ([type] i = 2; i <= N; ++i){
        if (!vis[i]) ++cnt, P[cnt] = i, E[i] = i - 1;
        for ([type] j = 1; j <= cnt && i * P[j] <= N; ++j){
            vis[i * P[j]] = 1;
            if (i % P[j]) E[i * P[j]] = E[i] * E[P[j]];
            else {
                E[i * P[j]] = E[i] * P[j];
                break;
            }
        }
    }
}

组合计数

加法原理和乘法原理

加法原理:完成一项工作有 nnn 类方法,第 iii 类方法下又有 aia_iai 类方法,那么完成这项工作总共有 ∑i=1nai\sum_{i = 1} ^ {n} a_ii=1nai 种方法

乘法原理:完成一项工作有 nnn 步方法,第 iii 步方法下又有 aia_iai 步方法,那么完成这项工作总共有 ∏i=1nai\prod_{i = 1}^{n} a_ii=1nai 种方法

排列数

AnmA_{n}^{m}Anm 表示从 nnn 个不重复的元素中选择 mmm 个按照一定顺序排列的方案数

根据乘法原理,第一个位置有 nnn 种选法,第二个位置有 n−1n − 1n1
选法,第三个位置有 n−2n − 2n2 种选法,以此类推,可得:

Anm=n×(n−1)×(n−2)×⋯×(n−m+1)=n!(n−m)!A_{n}^{m} = n \times (n - 1) \times (n - 2) \times \cdots \times (n - m + 1) = \frac{n!}{(n - m)!}Anm=n×(n1)×(n2)××(nm+1)=(nm)!n!

组合数

CnmC_{n}^{m}Cnm 表示从 nnn 个不重复的元素中选择 mmm 个的方案数

根据排列数,每种方案被计算了 m!m!m! 次,因此可得:

Cnm=Anmm!=n!m!(n−m)!C_{n}^{m} = \frac{A_{n}^{m}}{m!} = \frac{n!}{m! (n - m)!}Cnm=m!Anm=m!(nm)!n!

组合恒等式

根据组合数的计算方式,可以得到一系列的恒等式:

  • Cnm=Cnn−mC_{n}^{m} = C_{n}^{n - m}Cnm=Cnnm

  • Cnm=Cn−1m+Cn−1m−1C_{n}^{m} = C_{n - 1}^{m} + C_{n - 1}^{m - 1}Cnm=Cn1m+Cn1m1杨辉三角递推

  • ∑i=0nCni=2n\sum_{i = 0}^{n} C_{n}^{i} = 2 ^ ni=0nCni=2n

  • (x+y)n=∑i=0nCnixn−1yi(x + y) ^ n = \sum_{i = 0}^{n} C_{n}^{i} x ^ {n - 1} y ^ i(x+y)n=i=0nCnixn1yi二项式定理

捆绑法、插空法、隔板法

如果要求若干物品相邻,则可以将它们作为一个整体来进行计数

如果要求若干物品两两不相邻,可以先将其他物品放好,然后将
这些物品插入空当中,进行计数

通过加入隔板将问题转化,解决给相同元素分组的方案数问题

容斥原理

假设有两类元素 AAABBB,总元素个数为 AAA 元素个数 +++ BBB 元素个数 −- 既是 AAA 类也是 BBB 类的元素个数

把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去的方式被称为 容斥原理

假设有三类元素 AAABBBCCC,总元素个数为:

∣A∪B∪C∣=∣A∣+∣B∣+∣C∣−∣A∩B∣−∣B∩C∣−∣A∩C∣+∣A∩B∩C∣\mid A \cup B \cup C \mid = \mid A \mid + \mid B \mid + \mid C \mid - \mid A \cap B \mid - \mid B \cap C \mid - \mid A \cap C \mid + \mid A \cap B \cap C \mid ABC∣=∣A+B+CABBCAC+ABC

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三日连珠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值