评级……
查看原帖
评级……
658786
STUDENT00楼主2022/10/18 19:08

这题竟然可以蓝!最初等的数论知识啊!

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[11],b[11],ans;
void exgcd(int a,int b,int &x,int &y){
	if(!b){
		x=1,y=0;
		return;
	}
	exgcd(b,a%b,x,y);
	int t=x;
	x=y;
	y=t-a/b*y;
	return;
}
signed main(){
	scanf("%lld",&n);
	for(int i=1;i<=n;i++) scanf("%lld%lld",&a[i],&b[i]);
	int mod=1;
	for(int i=1;i<=n;i++) mod*=a[i];
	for(int i=1;i<=n;i++){
		int a1=mod/a[i],x,y;
		exgcd(a1,a[i],x,y);
		ans=(ans+b[i]*x*a1)%mod;
	}
	if(ans>0) printf("%lld",ans);
	else printf("%lld",ans+mod);
	return 0;
}
2022/10/18 19:08
加载中...