快速乘为什么会TLE 4个点
查看原帖
快速乘为什么会TLE 4个点
783233
1925153zty楼主2023/11/10 21:00
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,m=1;
struct dd
{
	ll x,y;
}f[25];
void ex(ll a,ll b,ll &x,ll &y)
{
	if(b==0)
	{
		x=1,y=0;
	}
	else
	{
		ex(b,a%b,x,y);
		ll t=x;x=y;y=t-a/b*y;
	}
}
ll ksc(int x,int y)
{
	ll res=0;
	for(;y;y>>=1,x=(x+x)%m)
	if(y&1)res=(res+x)%m;
	return res;
}
ll ch()
{
	ll x,y,ans=0;
	for(ll i=1;i<=n;i++)
	{
		ll mi=m/f[i].y;
		ex(mi,f[i].y,x,y);
		while(f[i].x<0)
		f[i].x+=m;
		ans=((ans+ksc(f[i].x,mi)*x)%m+m)%m;
	}
	return ans;
}
int main()
{
	cin>>n;
	for(ll i=1;i<=n;i++)
	cin>>f[i].x;
	for(ll i=1;i<=n;i++)
	cin>>f[i].y,
	m*=f[i].y;
	cout<<ch();
}

record

2023/11/10 21:00
加载中...