萌新求助,为什么用快速乘了还是WA最后一个
查看原帖
萌新求助,为什么用快速乘了还是WA最后一个
196899
lndjy楼主2020/5/14 19:28

软陶

#include<iostream>
#define int long long
using namespace std;
int a[15],b[15];
int x,y,n,ans,p=1;
int ksc(int x,int y,int p)
{
	int L=x*(y>>25)%p*(1<<25)%p;
	int R=x*(y&((1<<25)-1))%p;
	return (L+R)%p;
}
void exgcd(int xx,int yy)
{
	if(yy==0)
	{
		x=1;
		y=0;
		return;
	}
	exgcd(yy,xx%yy);
	int t=x;
	x=y; y=t-xx/yy*y;
}
signed main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	cin>>b[i]; 
	for(int i=1;i<=n;i++)
	cin>>a[i],p*=a[i];   
	for(int i=1;i<=n;i++)
	{
		exgcd(p/a[i],a[i]);
		x=(x%a[i]+a[i])%a[i];
		ans=ans+ksc(ksc(p/a[i],x,p),b[i],p);
		ans%=p;
	}
	cout<<(ans+p)%p;
	return 0;
}
2020/5/14 19:28
加载中...