社区讨论
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 条回复,欢迎继续交流。
正在加载回复...