20分,大紫大红
查看原帖
20分,大紫大红
1043936
TongGui楼主2023/11/7 06:04
#include<bits/stdc++.h>
#define int long long
using namespace std;
int p[15],b[15],r[15];
int P=1;
int n;
int gcd(int a, int b)
{
	if (b == 0)
		return a;
	else
		return gcd(b, a % b);
}
int ksm(int x,int y){//x的y次方
	if(y==0) return 0;
	if(y==1) return x;
	if(y%2==1) return ksm(x*x,y/2)*x%P;
	else return ksm(x*x,y/2)%P; 
} 
signed main(){
	cin>>n;
	for(int i = 0;i < n;i++){
		cin>>p[i]>>b[i];
		P*=p[i];
	}
	for(int i = 0;i < n;i++){
		int sum=1;
		int g=0;
		for(int j = 0;j < n;j++){
			if(i==j) continue;
			if(g==0){
				sum=b[j];
				g=b[j];
			}else{
				sum*=b[j];
				g=gcd(g,b[j]);
			}
		}
		r[i]=sum/g;
	}
	int ans=0;
	for(int i = 0;i < n;i++){
		ans=b[i]*r[i]*ksm(r[i],p[i]-2)%P;
	}
	cout<<ans<<endl;
	return 0;
}
2023/11/7 06:04
加载中...