社区讨论
assert 不对也能 AC ?
P4777【模板】扩展中国剩余定理(EXCRT)参与者 4已保存回复 7
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @m6bmzzkm
- 此快照首次捕获于
- 2025/01/25 11:34 去年
- 此快照最后确认于
- 2025/11/04 10:41 4 个月前
C1
typedef pair<bint,bint> E;
E exgcd(bint a, bint b) {
if (!b) {
return {1, 0};
} else {
auto [x, y] = exgcd(b, a % b);
return {y, x - a / b * y};
}
}
E mge(const E &a, const E &b) {
bint g = gcd(a.x, b.x);
bint c = b.y - a.y;
assert(c % g == 0);
c /= g;
bint m = a.x / g, n = b.x / g;
auto [p, q] = exgcd(m, n);
p *= c;
p = (p % n + n) % n;
bint mod = lcm(a.x, b.x);
E ret = {mod, (a.x * p + a.y)};
assert(ret.y % a.x == a.y);
// RE here !
return ret;
}
其中
mge 是对两个同余方程的合并,中间有一个 assert 用来判断合并是否正确,这个 assert 导致 RE on #8 #9,但是去掉之后就可以 AC回复
共 7 条回复,欢迎继续交流。
正在加载回复...