社区讨论

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 条回复,欢迎继续交流。

正在加载回复...