数学

本文将尽量包含所有省选范围内的数学知识。

本文会涉及到的数学模块:

  • 基础数学

  • 初等数论

  • 排列组合

  • 概率与期望

  • 线性代数

  • 多项式相关

  • 博弈论

前置知识

进制转化

相信读者已经掌握了最基本的进制转换方法,接下来将简单说明十进制转换二进制的正确性。

对于十进制数 \(x\),我们会将 \(x&1\) 作为对应二进制数的最低位,接着令 \(x\leftarrow \lfloor\frac{x}{2}\rfloor\)

可以发现,\(x&1\) 即是求 \(x\) 二进制下的最低位,接下来的右移操作,则是将问题规模缩小,变成一个相同的子问题,由于之前已经经历过 \(y\) 次右移,此时得到的最低位经过 \(y\) 次左移应该变成二进制下的第 \(y\) 位。

位运算相关

首先给出补码的定义:在计算机中,非负数的补码为其本身,负数补码为其二进制下按位取反后 +1 得到的结果。

负数不能执行左移操作。

数论

整除

\(a,b\in Z,a\ne 0,\exists q\in Z\) 使得 \(b=aq\),我们就称 \(a|b\)

关于整除的性质,都较为显然,读者或许可以在需要时自行推理得出。

平凡因数:对于 \(b\in Z\),把 \(\pm 1,\pm b\) 称为 \(b\) 的平凡因数。

素数相关

严格判定这里不再叙述。

素性测试:一种不对素数进行分解而判定的方法。

  • 确定性测试,顾名思义。

  • 概率性测试,利用随机算法判定素数,对于判定为素数,实际为合数的数,称为伪素数

最大公因数相关

Euclidean algorithm

通常称为“辗转相除法”,接下来将证明该算法基本定理 \(\gcd(a,b)=\gcd(b,a\mod b)\)

我们主要基于 \(a\in b,b\in a\rightarrow a=b\) 进行证明。

\(a\geq b\),设 \(a=bk+c\),显然 \(c=a\mod b\);设 \(d|a,d|b\)\(\frac{a}{d}-k\times\frac{b}{d}=\frac{c}{d}\rightarrow d|c\),即 \(d|a\mod b\),又因为 \(d|a,d|b\),所以对于任意 \(d|a,d|b\),存在 \(d|b,d|a\mod b\)

同理,可得对于 \(d|b,a\d|a\mod b\),存在 \(d|a,d|b\)。综上,得证。

该定理的基本实现相信读者已经知晓。

更相减损法

exgcd

求解 \(ax+by=\gcd(a,b)\),其中 \(a,b\) 为常数。

\(b=0\) 时,\(\gcd(a,0)=a\) (回想一下利用辗转相除法的最后一层)。此时 \(ax+0\times y=a\),容易发现 \(x=1\)\(y\) 取任意值。

借助欧几里得算法的思想,发现 \(\gcd(a,0)\) 正是递归的最后一层,考虑倒数第二层的求法。设倒数第二层为 \(\gcd(a,b)\),把最后一层改为 \(\gcd(b,a\mod b)\),要求解 \(ax+by=\gcd(a,b)\),发现 \(bx'+y'\times (a\mod b)=\gcd(b,a\mod b)\),接下来进行推导。

\[bx'+y'\times(a-b\times\lfloor \frac{a}{b}\rfloor )=\gcd(b,a\mod b) \]

\[bx'+y'a-y'b\times\lfloor\frac{a}{b}\rfloor=\gcd(b,a\mod b) \]

\[y'a+b(x'-y'\times\lfloor\frac{a}{b}\rfloor)=\gcd(b,a\mod b) \]

结合这两个式子来看:

  • \(ax+by=\gcd(a,b)\)

  • \(ay'+b(x'-y'\times\lfloor\frac{a}{b}\rfloor)=\gcd(b,a\mod b)\)

得到 \(x=y',y=x'-y'\times\lfloor\frac{a}{b}\rfloor\)

现在问题转变成了求解 \(x',y'\)

根据刚才对于最后一层的求解,我们已经可以求出该层的答案。注意在最后一层中,\(y\) 为任意值,这里尽量取 \(0\)

于是我们这样递归求解,即可得到一组合法的解。

posted @ 2024-02-06 20:46  BYR_KKK  阅读(7)  评论(0编辑  收藏  举报