救命,最后一个点wa了QaQ求大佬指教
查看原帖
救命,最后一个点wa了QaQ求大佬指教
174448
我能自己爬了楼主2021/8/5 20:32
#include <iostream>
using namespace std;
 long long exgcd( long long a,  long long b,  long long &x,  long long &y) {
    if (b == 0) {
        x = 1;
        y = 0;
        return a;
    }
     long long r = exgcd(b, a % b, x, y);
     long long t = x;
    x = y;
    y = t - a / b * y;
    return r;
}int n;
 long long a[100001], m[100001];
 long long exCRT(){
    
     long long M=m[1],A=a[1],x,y,d;
    for( long long i=2;i<=n;i++){
        
        d=exgcd(M,m[i],x,y);
        if((A-a[i])%d!=0){
            return -1;
        }
        x=((A-a[i])/d*x%(m[i]/d)+m[i]/d)%(m[i]/d);
        A-=x*M;
        M=M/d*m[i];
        A=(A%M+M)%M;
    }
    return (A%M+M)%M;
}
int main() {
	
    cin>>n;
    for(int i=1;i<=n;i++){
    	scanf("%lld%lld",&m[i],&a[i]);   //a[i]为模数,m[i]为余数 
    }
    cout<<exCRT();
    return 0;
}
2021/8/5 20:32
加载中...