MLE求助大佬
  • 板块灌水区
  • 楼主sbsbsbfluhang
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/8/1 18:14
  • 上次更新2024/8/1 19:28:32
查看原帖
MLE求助大佬
1126260
sbsbsbfluhang楼主2024/8/1 18:14
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int dir[4][2] = {1, 0, 0, 1, -1, 0, 0, -1};
const int N = 1e6 + 10;
ll a[N], m[N];
int n, K;
ll exgcd(ll a,ll b,ll &d,ll &x,ll &y){
    if(b==0){
        d=a;
        x=1;
        y=0;
    }else{
        exgcd(b,a%b,d,x,y);
        ll tmp =x;
        x=y;
        y=tmp-a/b*y;
    }
}
ll crt() {
    ll mm=1,x,y,d,res=0;
    for (int i=1;i<=n;i++) mm*=m[i];
    for (int i=1;i<=n;i++){
        ll mmm=mm/m[i];
        exgcd(mmm,m[i],d,x,y);
        res =((res+a[i]*mmm*x)%mm+mm)%mm;
    }
    return res;
}
int main() {
    ios::sync_with_stdio(0);
    cin>>n;
    for(int i=1;i<=n;i++) {
        cin>>m[i]>>a[i];
    }
    cout<<crt()<<endl;
    return 0;
}
//P1495

2024/8/1 18:14
加载中...