萌新求助 CRT WA on #2
查看原帖
萌新求助 CRT WA on #2
398190
lanretE楼主2022/6/18 09:48

rt,#2 WA 了,CRT 板子

/kel

#include<iostream>
#include<cmath>
#define ll long long
using namespace std;
ll exgcd(ll a,ll b,ll &x,ll &y){
    if(b==0){
        x=1,y=0;
        return a;
    }
    ll d=exgcd(b,a%b,y,x);
    y-=a/b*x;
    return d;
}
ll mul(ll a,ll b,ll p){
	ll ans=0;
	while(b){
		if(b&1)ans=(ans+a)%p;
		a=a*2%p;
		b>>=1;
	}
	return ans;
}
int n;
ll m[20],aa[20],inv[20],M[20],t[20];
ll MM=1,y,x;
int main(){
	cin>>n;
	for(int i=1;i<=n;++i) cin>>aa[i],aa[i]=abs(aa[i]);
	for(int i=1;i<=n;++i){
		cin>>m[i];
		m[i]=abs(m[i]);
		MM*=m[i];
	}
	for(int i=1;i<=n;++i) aa[i]=(aa[i]%m[i]+m[i])%m[i];
	for(int i=1;i<=n;++i){
		M[i]=MM/m[i];
		exgcd(M[i],m[i],t[i],y);
		t[i]=(m[i]+t[i]%m[i])%m[i];
		aa[i]=(m[i]+aa[i]%m[i])%m[i];
		for(int j=1;j<=aa[i];++j) x=(x+mul(M[i],t[i],MM))%MM;
	}
	cout<<x%MM;
}

有人帮忙看看吗

2022/6/18 09:48
加载中...