ll exgcd(ll a,ll b,ll &x,ll &y)
{
    if(!b)
    {
        x = (ll)1,y = (ll)0;
        return a;
    }
    ll r = exgcd(b,a%b,x,y);
    ll t = x;
    x = y;
    y = t - a/b*y;
    return r;
}

//n个方程: x = a[i](mod m[i]) (0<=i<n)
ll china(int n,int *a,int *m)
{
    ll M = 1,d,y,x = 0;
    int i;
    for(i=0;i<n;i++)
        M *= m[i];
    for(i=0;i<n;i++)
    {
        ll w = M/m[i];
        d = exgcd(m[i],w,x,y)
        x = (x + y*w*a[i])%M;
    }
    return (x+M)%M;
}

 

相关文章:

  • 2021-11-02
  • 2021-10-05
  • 2022-12-23
  • 2022-12-23
  • 2021-12-18
  • 2021-10-18
  • 2021-10-25
  • 2021-04-16
猜你喜欢
  • 2022-01-20
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-04
  • 2022-02-24
  • 2021-09-18
相关资源
相似解决方案