想了好久, 还是太弱了~
#include <iostream>
using namespace std;
typedef long long LL;
int exgcd(LL a, int b, int &x, int &y)
{
if(!b)
{
x = 1, y = 0;
return a;
}
int t = exgcd(b, a % b, y, x);
y -= a / b * x;
return t;
}
int main()
{
int n; cin >> n;
LL a, b; scanf("%lld %lld", &a, &b);
LL a1 = a , m1 = b;
for(int i = 1; i < n; i ++)
{
int a2, m2, x, y; scanf("%d %d", &a2, &m2);
int t = exgcd(a1, a2, x, y);
if((m2 - m1) % t)
{
cout << -1 << endl;
return 0;
}
x = (((x * (m2 - m1) / t) % (a2 / t)) + (a2 / t)) % (a2 / t);
m1 = x * a1 + m1;
a1 = (a1 * a2) / t;
}
cout << m1 << endl;
return 0;
}