求解方程组
其中m互质 , 我们设
则通解为
t为任意整数
因为Mi与mi互质 所以令Mi^-1 为Mi 模mi的逆元
我们发现对于任意ai * Mi * Mi^-1 它模mi 为 ai 因为 Mi * Mi^-1 =1
https://www.luogu.org/problemnew/show/P3868
#include
#define N 15
#define LL long long
using namespace std;
int k; LL A[N],B[N],M=1,ans,x,y;
LL mul(LL a,LL b,LL p){
LL ans=0;
for(;b;b>>=1){
if(b&1) ans = (ans+a) % p;
a = (a+a) % p;
}return ans;
}
void exgcd(LL a,LL b){
if(!b){x=1,y=0; return;}
exgcd(b,a%b); LL x1=y,y1=x-a/b*y; x=x1,y=y1;
}
int main(){
scanf("%d",&k);
for(int i=1;i<=k;i++) scanf("%lld",&A[i]);
for(int i=1;i<=k;i++) scanf("%lld",&B[i]), M *= B[i];
for(int i=1;i<=k;i++) A[i] = (A[i] % B[i] + B[i]) % B[i];
for(int i=1;i<=k;i++){
int Mi=M/B[i];
exgcd(Mi,B[i]); x=(x+B[i])%B[i];
ans = (ans+mul(mul(x,Mi,M),A[i],M))%M;
}printf("%lld",(ans+M)%M); return 0;
}