社区讨论

CRT 60求助!

P1495【模板】中国剩余定理(CRT)/ 曹冲养猪参与者 2已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@lo8fe71t
此快照首次捕获于
2023/10/27 17:43
2 年前
此快照最后确认于
2023/10/27 17:43
2 年前
查看原帖
CPP
#include<iostream>
using namespace std;
const int N = 15;
int n;
unsigned long long M = 1, a[N], b[N], x[N], y[N], m[N], res;
unsigned long long exgcd(unsigned long long a, unsigned long long b, unsigned long long& x, unsigned long long& y) {
	if (!b) {
		x = 1, y = 0;
		return a;
	}
	unsigned long long d = exgcd(b, a % b, y, x);
	y -= (a / b) * x;
	return d;
}
int main(void) {
	cin >> n;
	for (int i = 0; i < n; ++i) {
		cin >> a[i] >> b[i];
		M *= a[i];
	}
	for (int i = 0; i < n; ++i) {
		m[i] = M / a[i];
		unsigned long long x = 0, y = 0;
		unsigned long long d = exgcd(m[i], a[i], x, y);
		x /= d;
		res += b[i] * m[i] * x;
	}
	cout << (res % M + M) % M << endl;
	return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...