求助溢出
查看原帖
求助溢出
563650
haochengw920楼主2024/7/9 18:13

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;
}
2024/7/9 18:13
加载中...