数学

数论

0. 基本定义

离散数学一般只讨论整数。

质数是只包含 \(1\) 和自己两个因子的数,一般用 \(p\) 表示质数。

算数基本定理(唯一分解定理):

\[N=\prod p_i^{r_i} \]

\(\gcd\) 表示两数的最大公约数。

\(a, b\) 两数互质,当且仅当 \(\gcd(a, b) = 1\)

1. 欧几里得算法

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

2. 裴蜀定理

\(\gcd(a,b)\mid d\) 时,\(ax+by=d\) 有整数解。

3. 扩展欧几里得算法

\(ax+by=\gcd(a,b)\) 的通解。

根据欧几里得算法,原式等价于

\[bx+(a\bmod b)\times y=\gcd(a,b) \]

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

化简得

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

递归即可求特解,时间复杂度 \(\mathcal O(\log n)\)

代码
int exgcd(int A, int B, int &x, int &y) {
	if(B == 0) {
		x = 1, y = 0;
		return A;
	}
	int d = exgcd(B, A % B, x, y), x0 = x, y0 = y;
	x = y0, y = x0 - (A / B) * y0;
	return d;
}

通解:

\[x_0=x+\frac{b}{\gcd(a,b)} \]

\[y_0=y-\frac{a}{\gcd(a,b)} \]

4. 中国剩余定理

解若干个形如 \(x\equiv a_i \pmod {b_{i}}\) 同余方程组,必须满足 \(b_i\) 两两互质。

\(B=\prod b_i\)

\[x=\sum a_i\times \frac{B}{b_i}\times\bigg[\big(\frac{B}{b_i}\big)^{-1}\bigg]_{b_i}\bmod B \]

时间复杂度 \(\mathcal{O(n\log n)}\)

5. 扩展中国剩余定理

不需要满足两两互质,可式子合并。

\[x\equiv a_1 \pmod {b_1} \]

\[x\equiv a_2 \pmod {b_2} \]

写为

\[x=a_1+k_1b_1=a_2+k_2b_2 \]

移项得

\[k_1b_1-k_2b_2=a_2-a_1 \]

此时根据裴蜀定理,若 \(\gcd(b_1,b_2) \nmid a_2-a_1\),则无解,否则用扩欧求出 \(k_1,k_2\),得到合并后的同余式:

\[x\equiv a_1+k_1b_1 \pmod{\mathrm{lcm}(b_1,b_2)} \]

不断两两合并即可。

时间复杂度 \(\mathcal O(n\log n)\)

代码
int exCRT() {
	int A = w[1], B = m[1];
	for(int i = 2; i <= 4; i++) {
		int x, y;
		int d = exgcd(B, -m[i], x, y);
		x = (x * ((w[i] - A) / d));
		x = (x % (m[i] / d) + (m[i] / d)) % (m[i] / d);
		int Lcm = lcm(B, m[i]);
		A = ((A + (x * B) % Lcm) % Lcm + Lcm) % Lcm;
		B = Lcm;
	}
	return A;
}

组合数学

0. 基本定义

待补

posted @ 2025-03-03 15:48  DHT666  阅读(13)  评论(0)    收藏  举报