想知道无解情况则么处理,虽然这题保证有解。
#include<bits/stdc++.h>
using namespace std;
long long read()
{
long long f=1,x=0;
char ss=getchar();
while(ss<'0'||ss>'9'){if(ss=='-')f=-1;ss=getchar();}
while(ss>='0'&&ss<='9'){x=x*10+ss-'0';ss=getchar();}
return f*x;
}
long long ksc(long long x,long long y){
if(y==0) return 0;
long long z=ksc(x,y/2);
z=(z+z);
if(y%2==1) z=(z+x);
return z;
}
long long gcd(long long a,long long b)
{
if (b==0) return a;
else return gcd(b,a%b);
}
void memge(long long &a1,long long &m1,long long a2,long long m2){
if(m2>m1) swap(m1,m2),swap(a1,a2);
while(a1%m2!=a2){
a1=a1+m1;
}
m1 =(m2/gcd(m1,m2))*m1;
}
long long a1,m1;
int main(){
int n;
n=read();
m1=read();
a1=read();
a1%=m1;
for(int i=1;i<n;i++){
long long a2;long long m2;
m2=read();a2=read();
a2%=m2;
memge(a1,m1,a2,m2);
}
cout<<(a1+m1)%m1;
return 0;
}