90分求调
查看原帖
90分求调
839893
Luka__Modric楼主2024/4/21 21:49
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,a[15],b[15],ans,qwq=1;
pair<int,int> exgcd(int c,int d){

    if(d==0)
        return {1,1};
    pair<int,int> tmp=exgcd(d,c%d);
    int x=tmp.second,y=(1-c*tmp.second)/d;
    return {x,y};
}
int inv(int q,int x){
    pair<int,int> tmp=exgcd(b[x],q);
    return (tmp.second+b[x])%b[x];
}
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	for(int i=1;i<=n;i++)
		cin>>b[i],qwq*=b[i];
    for(int i=1;i<=n;i++){
        if(a[i]<0){
            int tmp=abs(a[i])/b[i]+1;
            a[i]+=tmp*b[i];
        }
    }
	for(int i=1;i<=n;i++)
		ans+=(__int128)(qwq/b[i])*a[i]*inv(qwq/b[i],i),ans%=qwq;
	cout<<ans%qwq;
	return 0;
}

/*
q*i=1(mod qwq)
q*i=1+qwq*a
q*i-qwq*a=1




*/
2024/4/21 21:49
加载中...