数论太弱啦,还是来点基础的吧..终于不用担心小学奥数题不会做啦……
中国剩余定理是解决线性模方程组的东西
#include
#define ll long long
using namespace std;
ll a[20],p[20];
int n;
void ex_gcd(ll x,ll y,ll &a,ll &b,ll &gcd)
{
if(x==0)
{
gcd=y;a=0;b=1;
return;
}
ex_gcd(y%x,x,b,a,gcd);
a-=b*(y/x);
}
ll China()
{
ll na=a[1],np=p[1];
for(int i=2;i<=n;i++)
{
ll gcd,k1,k2;
ex_gcd(np,p[i],k1,k2,gcd);
if(abs(na-a[i])%gcd)return -1;
k1=k1%(p[i]/gcd);
k1*=(a[i]-na)/gcd;
k1=k1%(p[i]/gcd);
if(k1<0)k1+=p[i]/gcd;
na=k1*np+na;
np=np*p[i]/gcd;
}
//cout << na <<" "<< np << endl;
return na%np;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>p[i]>>a[i];
cout<