do_while_true

一言(ヒトコト)

「学习笔记」联赛数论再学习

原来联赛是考数论的......好像很多的结论没有给证明。

一些定义和结论

剩余类:记模 \(m\)\(r\)\(r\in [0,m)\))的自然数组成的集合为 \(k_r\),则 \(k_r\) 为模 \(m\) 的一个剩余类,任意 \(a\bmod m=r\),称 \(a\)\(k_r\) 的一个代表元。

完系:在每个 \(k_r\) 中任取一个代表元为模 \(m\) 的一个完系。

缩系/简化剩余系:对于每一个与 \(m\) 互质的 \(r\),在 \(k_r\) 中任取一个代表元为模 \(m\) 的一个缩系。若 \(x\perp m\),则将 \(m\) 的一个缩系中每个数都乘 \(x\) 后,仍然为 \(m\) 的一个缩系。

裴蜀定理\(ax+by=c,x\in \mathbb{Z}^{*},y\in \mathbb{Z}^{*}\) 有整数解的充要条件是 \(\gcd (a,b)|c\)

费马小定理:若 \(\gcd(a,m)=1\),则 \(a^{m-1}\equiv 1\pmod m\)

欧拉定理:若 \(\gcd(a,m)=1\),则 \(a^{\varphi(m)}\equiv 1\pmod m\)

扩展欧拉定理\(a^{b}\equiv a^{b\ \bmod\ \varphi(m)+\varphi(m)}\pmod m\)

Lucas 定理

\[\binom{n}{m}=\binom{\left \lfloor n/p \right \rfloor }{\left \lfloor m/p \right \rfloor }\binom{n\bmod p}{m\bmod p}\pmod p \]

欧几里得算法(辗转相除法)

\[\gcd(a,b)=\gcd(b,a\bmod b)\ \ \ (b\neq 0) \\ \gcd(a,0)=a \]

Stein算法

\(a,b\) 均为偶数时:\(\gcd(a,b)=2\gcd(a/2,b/2)\)

\(a\) 为偶数,\(b\) 为奇数时:\(\gcd(a,b)=\gcd(a/2,b)\)

\(a\) 为奇数,\(b\) 为奇数时:\(\gcd(a,b)=\gcd(a-b,b)\).(\(a>b\)

扩展欧几里得算法(exgcd)

求解下面这个不定方程:

\[ax+by=c \]

利用裴蜀定理判断有无解,若有解必有 \(\gcd(a,b)|c\)

先求解 \(ax+by=\gcd(a,b)\)

把后面的 \(\gcd(a,b)\) 辗转相除一下再写成类似的形式(这里的 \(x',y'\) 是对应 \(\gcd(b,a\bmod b)\)\(x,y\),和上面的 \(x,y\) 没有关系):

\[ax+by=\gcd(a,b)=\gcd(b,a\bmod b)=bx'+(a-\left\lfloor\frac{a}{b}\right\rfloor b)y' \]

因为要求解 \(x,y\),所以假设我们已经求解了 \(x',y'\),则要按 \(a,b\) 把两个方程分开。

\[ax+by=ay'+b(x'-\left\lfloor \frac{a}{b}\right\rfloor y') \]

递归求解得到 \(x',y'\) 后,对比系数可得 \(x=y',y=(x'-\left\lfloor \frac{a}{b}\right\rfloor y')\)

这样递归就能求出 \(ax+by=\gcd(a,b)\) 一组特解了,最后当 \(b=0\) 的时候递归终止,此时 \(ax+by=\gcd(a,b)\) 的解是 \(x=1,y=0\)

void exgcd(int a, int b, int &x, int &y) {
	if(!b) { x = 1, y = 0; return ; }
	exgcd(b, a % b, x, y);
	int nx = y, ny = x - (a / b) * y;
	x = nx, y = ny;
}

\(d=\gcd(a,b)\)

求出 \(ax+by=d\) 的一组特解 \(ax_0+by_0=d\),则有 \(a\frac{x_0c}{d}+b\frac{y_0c}{d}=c\),记作 \(ax_1+by_1=c\)

其通解为 \(a(x_1+k\frac{b}{\gcd(a,b)})+b(y_1-k\frac{a}{\gcd(a,b)})\)

充要性证明与下面证明扩展中国剩余定理的充要性大致相同,(考虑在数轴上从位于 \(d\) 的位置跳)。

扩展中国剩余定理

合并两个一元线性同余方程:

\[\left\{\begin{matrix} x\equiv a_1\pmod {m_1} \\ x\equiv a_2\pmod{m_2} \end{matrix}\right. \]

先考虑求出一个特解:有 \(a_1+k_1m_1=a_2+k_2m_2\),整理得 \(k_1m_1-k_2m_2=a_2-a_1\),用裴蜀定理判断有无解,否则 exgcd 求出一组解 \((p,q)\),则求出同时满足原先两个同余方程的特解 \(x_0=pm_1+a_1\) .

然后考虑利用这个特解找到通解的规律:考虑所有满足第一个方程的 \(x\),它在与 \(x_0\) 的距离是 \(m_1\) 的倍数,所有满足第二个方程的 \(x\),它与 \(x_0\) 的距离是 \(m_2\) 的倍数。那么所有同时满足两个方程的 \(x\),它与 \(x_0\) 的距离既是 \(m_1\) 的倍数也是 \(m_2\) 的倍数,那么显然满足条件的 \(x\) 是与 \(x_0\) 距离是 \(\mathrm{lcm}(m_1,m_2)\) 的倍数、

即求出与所给两个方程等价的方程:\(x\equiv x_0 \pmod {\mathrm{lcm}(m_1,m_2)}\)

为了防止爆精度,exgcd 求解同余方程时使用最小非负整数解。

posted @ 2021-10-06 20:41  do_while_true  阅读(161)  评论(3编辑  收藏  举报