90pts求条
查看原帖
90pts求条
1282426
_Unicorn_楼主2025/1/24 15:24
#include<bits/stdc++.h> 
#define int long long
using namespace std;
int n,aa[100005],bb[100005];
int qwq(int a,int b,int m){
	int r=0;
	while(b>0){
		if(b&1)r=(r+a)%m;
		a=(a+a)%m;
		b>>=1;
	}
	return r;
}
int ex_gcd(int a,int b,int &x,int &y){
	if(b==0){
		x=1;
		y=0;
		return a;
	}
	int d=ex_gcd(b,a%b,y,x);
	y-=a/b*x;
	return d;
}
int ex_crt(){
	int x,y;
	int a1=aa[1],b1=bb[1];
	int ans=0;
	for(int i=2;i<=n;i++){
		int a2=aa[i],b2=bb[i];
		int a=b1,b=b2,c=(a2-a1%b2+b2)%b2;
		int d=ex_gcd(a,b,x,y);
		x=qwq(x,c/d,b/d);
		ans=a1+x*b1;
		b1=b2/d*b1;
		ans=(ans%b1+b1)%b1; 
		a1=ans;
	}
	return ans;
}
main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>bb[i]>>aa[i];
	}
	cout<<ex_crt();
	return 0;
}
2025/1/24 15:24
加载中...