中国剩余定理WA40求助QWQ
查看原帖
中国剩余定理WA40求助QWQ
571265
Infinity_Fantasy楼主2023/9/11 22:10

萌新刚学 oioi,求助中国剩余定理模板 QWQQWQ

#include<bits/stdc++.h>
using namespace std;
__int128 n,x,y,k,ans,tmp=1,a[12],b[12];
inline int read(){
	int x=0,f=1;char ch=getchar();
	while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
	while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
	return x*f;
}
void write(int x){
	if(x<0){putchar('-');x=-x;}
	if(x>=10) write(x/10);
	putchar(x%10+'0');
	return;
}
void exgcd(__int128 a,__int128 b){
	if(!b){
		x=1,y=0;
		return;
	}
	exgcd(b,a%b);
	k=x,x=y;
	y=k-(a/b)*y;
}
int main(){
	n=read();
	for(int i=1;i<=n;i++) a[i]=read(),b[i]=read(),tmp*=a[i];
	for(int i=1;i<=n;i++){
		__int128 m=tmp/a[i];
		exgcd(m,a[i]);
		ans+=b[i]*x*m;
	}
	write(ans);
	return 0;
}
2023/9/11 22:10
加载中...