rt , 改成 __int128 就过了 但是看题解有 long long 的解法
请问是哪里溢出了?
#include<cstdio>
#include<cmath>
#include<tuple>
#include<utility>
#include<algorithm>
#define int long long
#define fir first
#define sec second
#define mkp make_pair
#define Pii pair<int, int>
using namespace std;
inline void exgcd(int a, int b, int &x, int &y) {
if (!b) {
x = 1, y = 0;
return;
}
exgcd(b, a % b, y, x);
y -= a / b * x;
}
int n;
int x, y;
inline Pii excrt(int a, int b, int c, int d) {
int gc = __gcd(b, d), del = c - a;
if (del % gc) return mkp(0, 0);
int p, q; exgcd(b / gc, d / gc, p, q);
p = del / gc * p % (d / gc);
if (p < 0) p += d / gc;
q = b / gc * d; p = b * p + a;
return mkp(p, q);
}
signed main()
{
scanf ("%lld", &n);
for (int i = 1; i <= n; ++ i) {
int p, q;
scanf ("%lld%lld", &q, &p);
if (i == 1) x = p, y = q;
else tie(x, y) = excrt(x, y, p, q);
}
return printf ("%lld\n", x), 0;
}