妹子,刚学扩展中国剩余定理,36pts求调,悬赏一关注

P4777 【模板】扩展中国剩余定理(EXCRT)

@[Cx114514](/user/661641) 你猜你为什么输出负数 ```cpp #include <bits/stdc++.h> #define int __int128 using namespace std; int read() { int f = 1; char c = getchar(); while (!isdigit(c)) { if (c == '-') f = -1; c = getchar(); } int x = 0; while (isdigit(c)) { x = x * 10 + c - '0'; c = getchar(); } return x * f; } int buf[45]; void write(int x) { int p = 0; if (x < 0) { putchar('-'); x = -x; } if (x == 0) putchar('0'); else { while (x) { buf[++p] = x % 10; x /= 10; } for (int i = p; i >= 1; i--) putchar('0' + buf[i]); } } int n, m[100005], p[100005]; int exgcd(int a, int b, int &x, int &y) { if (b == 0) { x = 1; y = 0; return a; } int g = exgcd(b, a % b, y, x); y -= (a / b) * x; return g; } signed main() { n = read(); for (int i = 1; i <= n; i++) p[i] = read(), m[i] = read(); for (int i = 2; i <= n; i++) { int x, y; int g = exgcd(p[i - 1], p[i], x, y); x *= ((m[i] - m[i - 1]) / g); y *= ((m[i] - m[i - 1]) / g); p[i] = p[i - 1] * p[i] / g; m[i] = ((m[i - 1] + p[i - 1] * x) % p[i] + p[i])%p[i]; } write((m[n] % p[n] + p[n]) % p[n]); putchar('\n'); return 0; } ```
by LgxTpre @ 2023-06-03 21:45:32


@[Cx114514](/user/661641) 既然是妹子,就和我??,??完就帮你调
by Antiluna @ 2023-06-03 21:45:45


@[LgxTpre](/user/66709) 已解决,关注了
by Cx114514 @ 2023-06-03 21:48:46


一七年老年人路过: 世界再怎么熙攘,你谷永远是那年的模样。 外面的梗和热词换了一个又一个了,这里却像一个活化石,或者说是世外桃源,仿佛和外界隔绝了一样。
by Kai_Admin @ 2023-06-03 22:52:58


|