欢迎大家访问我的老师的OJ———caioj.cn
题目描述
思路
详细参考
这道题输入有坑,且多组数据。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#define ll long long
using namespace std;
ll exgcd(ll a,ll b,ll &x,ll &y)
{
if(!b){x=1;y=0;return a;}
ll tx,ty,d=exgcd(b,a%b,tx,ty);
x=ty;y=tx-(a/b)*ty;
return d;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
bool bk=true;
ll x1,x2,m1,m2;scanf("%lld%lld",&m1,&x1);
for(int i=1;i<n;i++)
{
scanf("%lld%lld",&m2,&x2);
if(bk==false)continue;
ll a=m1,b=m2,x,y,k=x2-x1;ll d=exgcd(a,b,x,y);
if(k%d){bk=false;continue;}
x=(x*(k/d)%(b/d)+b/d)%(b/d);
x1=x1+x*m1;m1=m1*m2/d;
}
if(!bk)puts("-1");
else printf("%lld\n",x1);
}
return 0;
}