中国剩余定理

中国剩余定理 (Chinese Remainder Theorem, CRT) 的相关内容。

是两两互质的整数, 是同余方程 的一个解。

对于任意的 个整数 ,方程组

有整数解,为

证明

因为 ,所以 。设 ,因为 ,所以 ,即最后答案对所有方程组成立。

实现

都可以直接算出,而 是同余方程的解。

因为 两两互质,所以 互质。由裴蜀定理

因此只需通过扩展欧几里得算法求出 即为 的一个解。

洛谷 P1495【模板】中国剩余定理(CRT)/ 曹冲养猪

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <cstdio>

typedef long long ll;

const int N = 13;
ll n, p[N], a[N];
ll m = 1, M[N], t[N];
ll ans;

int main() {
scanf("%lld", &n);
for (int i = 1; i <= n; i++) {
scanf("%lld %lld", &p[i], &a[i]);
m *= p[i];
}
for (int i = 1; i <= n; i++) {
M[i] = m / p[i];
ll x, y;
ExGcd(M[i], p[i], x, y);
t[i] = x < 0 ? x + p[i] : x;
ans += a[i] * M[i] * t[i];
}
printf("%lld\n", ans % m);
return 0;
}

中国剩余定理
https://operapeking.github.io/2022/07/22/crt/
作者
Peking Opera
发布于
2022年7月22日
许可协议