悬关求条,换快读后WA#4#5,不换快读TLE
查看原帖
悬关求条,换快读后WA#4#5,不换快读TLE
1283920
Langyiming369楼主2025/7/28 09:29

30ptspts 求调 时间够 但不知为何WA了

#include<bits/stdc++.h>
using namespace std;
long long n,k,a[5000001],c[5000001],cc[500003],aa=1,kk=1,s,ans;
unsigned long long p;
long long ksm(long long a,long long b,unsigned long long p)
{
	long long ans=1;
	while(b)
	{
		if(b&1)
			ans=ans*a%p;
		b>>=1;
		a=a*a%p;
	}
	return ans%p;
}
void read(long long &kkk)
{
	kkk=0;
	char ch=getchar();
	while (ch<'0'||ch>'9'){
		ch=getchar();
	}
	while (ch>='0'&&ch<='9'){
		kkk=kkk*10+ch-48;
		ch=getchar();
	}
	kkk=kkk;
}
int main()
{
	read(n);
	cin>>p;
	read(k);
	a[0]=1;
	c[0]=1;
	for(int i=1;i<=n;i++)
	{
		read(a[i]);
		aa=aa*a[i]%p;
		c[i]=c[i-1]*a[i-1]%p;
	}
	cc[n+1]=cc[n]=1;
	for(int i=n-1;i>=1;i--)
	{
		cc[i]=cc[i+1]*a[i+1]%p;
		c[i]=c[i]*cc[i]%p; 
	}
	for(int i=1;i<=n;i++)
	{
		kk=kk*k%p;
		s=kk*c[i]%p;
		ans=(ans+s)%p;
	}
	ans=ans*ksm(aa,p-2,p)%p;
	cout<<ans;
	return 0;
}
2025/7/28 09:29
加载中...