设m1,m2…mk是k个两两互素的正整数
则同余方程组:
x ≡ a1(mod m1)
x ≡ a2(mod m2)
… …
x ≡ ak(mod mk)
记m=m1*m2*m3……mk
有bj使
则
ps:x不一定是最小的需要mod m
例题:求下列同余方程组最小解
x≡2 mod 3
x≡1 mod 4
x≡3 mod 5
input:
3
2 3
1 4
3 5
output:
53
code
#include<cstdio>
int n;
int mj[100],aj[100];
//mj[]指除数,aj[]指余数
int szdl(){
int m=1,x=0;
for(int i=1;i<=n;i++) {
int mm=m/mj[i];
for(int j=1;;j++)
if((mm*j)%mj[i]==1) {
x+=mm*j*aj[i];
break;
}
}
return x%m;//注意%m
}
int main(){
// while(~scanf("%d %d",&aj[++n],&mj[++n]));
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d %d",&aj[i],&mj[i]);
m*=mj[i];
}
printf("%d",szdl());
return 0;
}