社区讨论
6pts玄关求求调
P4777【模板】扩展中国剩余定理(EXCRT)参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mm09b3i1
- 此快照首次捕获于
- 2026/02/24 15:00 2 周前
- 此快照最后确认于
- 2026/02/26 08:25 上周
CPP
#include <bits/stdc++.h>
#define int __int128
using namespace std;
int n, m, ans;
inline int read() {
int s = 0, w = 1;
char ch = getchar();
while (ch < '0' || ch > '9') {
if (ch == '-')
w == -1;
ch = getchar();
}
while (ch >= '0' && ch <= '9') {
s = (s << 1) + (s << 3) + (ch ^ 48);
ch = getchar();
}
return s * w;
}
inline void write(int x) {
if (x) {
write(x / 10);
putchar(x % 10 + '0');
}
}
inline int exgcd(int a, int b, int &x, int &y) {
if (b == 0) {
x = 1, y = 0;
return a;
}
int z = exgcd(b, a % b, x, y);
int d = x;
x = y, y = d - a / b * y;
return z;
}
signed main() {
n = read();
for (int i = 1; i <= n; i++) {
int a, b;
a = read(), b = read();
int x, y;
int c = exgcd(m, a, x, y);
x = (x * (b - ans) / c % a + a) % a;
ans += x * m;
if (i == 1)
m = 1;
m = m * a / c;
}
write(ans);
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...