P1495 【模板】中国剩余定理(CRT)/ 曹冲养猪

发布时间 2023-04-26 18:38:00作者: towboat

 

 

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;

#define int long long
int n,a[20],M[20],Mi[20];
int gcd(int a,int b,int &x,int &y){
    if (b == 0){
        x=1; y=0; return a;
    }
    int t = gcd(b,a%b,y,x); y -= a/b*x;
    return t;
}
 void sov(){
 	int xx=1;
 	for(int i=1;i<=n;i++){
 		cin>>M[i]>>a[i];
 		xx*=M[i];
 	}
 	int ans= 0;
 	for(int i=1;i<=n;i++){
 		Mi[i]=xx/M[i];
 		
 		int x=0,y=0;
 		gcd(Mi[i],M[i],x,y) ;
 		
 		ans+= a[i]*Mi[i]* ((x+M[i])%M[i]) ;
 	}
 	cout << ans%xx <<endl;
 }
 signed main(){
 	cin>>n; sov() ;
 }