void ext_gcd(int a,int b,int &d,int &x,int &y)
{
if(!b)
{
x=1;y=0;d=a;
return ;
}
else
{
ext_gcd(b,a%b,d,y,x);
y-=a/b*x;
}
}
int a[100],m[100],M;///x=a[i](mod m[i])
int China(int r)
{
M=1;
for(int i=1;i<=r;i++) M*=m[i];
int ans=0;
for(int i=1;i<=r;i++){
int Mi=M/m[i],d,x0,y0;
ext_gcd(Mi,m[i],d,x0,y0);
ans=(ans+x0*a[i]*Mi)%M;
}
ans=(ans%M+M)%M;
return ans;
}
中国剩余定理模板
最新推荐文章于 2023-01-17 11:15:28 发布