CRT80pts求调
查看原帖
CRT80pts求调
1423269
ini_____楼主2025/1/17 16:36

QWQ

#include<bits/stdc++.h>
#define int __int128
using namespace std;
const int N=100;
long long a[N],b[N];
long long n;
int fpow(int a,int b,int p){
	if(b==0)return 1;
	int mid=fpow(a,b/2,p);
	mid=mid*mid%p;
	if(b%2==0)return mid%p;
	else return mid*a%p;
}
int phi(int x){
	int ans=x;
	int i=2;
	while(x && i*i<=x){
		if(x%i==0){
			ans=ans/i*(i-1);
			while(x%i==0)x/=i;
		}
		i++;
	}
	if(x)ans=ans/x*(x-1);
	return ans;
}
int rev(int x,int p){
	return fpow(x,phi(p)-1,p);
} 
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i]>>b[i];
	int mod=1,ans=0;
	for(int i=1;i<=n;i++)mod*=a[i];
	for(int i=1;i<=n;i++){
		int modi=(int)mod/a[i];
		int r=rev(modi,(int)a[i]);
		ans+=(int)b[i]*modi*r%mod;
		ans%=mod;
	}
	cout<<(long long)(ans);
}
2025/1/17 16:36
加载中...