P4777 long long 溢出求调
  • 板块灌水区
  • 楼主zhx20081129
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/7/10 14:08
  • 上次更新2024/7/10 15:16:28
查看原帖
P4777 long long 溢出求调
914572
zhx20081129楼主2024/7/10 14:08
#include<bits/stdc++.h>
using namespace std;
#define ll long long 
ll exgcd(ll a,ll b,ll &x,ll &y){
    if(!b){
        x=1,y=0;
        return a;
    }
    ll d=exgcd(b,a%b,x,y);
    ll z=x;
    x=y;
    y=z-y*(a/b);
    return d;
}
int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int n;
    while(cin>>n){
        ll a,b,x,y,k;
        cin>>a>>b;
        ll lcm=a,ans=b;
        bool flag=1;
        --n;
        while(n--){
            cin>>a>>b;
            b=(b-ans%a+a)%a;
            ll d=exgcd(lcm,a,x,y);
            if(b%d){
                flag=0;
            }
            else k=(x%a)*(b/d)%a;
            ans+=k*lcm;
            lcm=lcm/d*a;
            ans=(ans%lcm+lcm)%lcm;
        }
        if(flag){
            cout<<ans<<"\n";
        }
        else {
            cout<<"-1\n";
        }
    }
    return 0;
}
2024/7/10 14:08
加载中...