求调,P5431
查看原帖
求调,P5431
569702
_xxy_楼主2022/7/8 18:30

4,5点过了,但前三点wa

#include<cstdio>
using namespace std;
inline int read(){
	int x=0,f=1;
	char ac=getchar();
	while(ac<'0'||ac>'9'){
		if(ac=='-') f=-1;
		ac=getchar();
	}
	while(ac>='0'&&ac<='9'){
		x=x*10+(ac-'0');
		ac=getchar();
	}
	return x*f;
}
int n,mod,k,q[5000005],h[5000005],m=1,ans,x,y,a[5000005];
void exgcd(int a,int b,int &x,int &y){
	if(b==0){
		x=1;
		y=0;
		return;
	}
	exgcd(b,a%b,y,x);
	y-=a/b*x;
}
int main(){
	n=read(),mod=read(),k=read();
	q[0]=1,h[n+1]=1;
	for(register int i=1;i<=n;i++){
		a[i]=read();
		q[i]=1ll*q[i-1]*a[i]%mod;
		m=1ll*m*a[i]%mod;
	}
	for(register int i=n;i>=1;i--) h[i]=1ll*h[i+1]*a[i]%mod;
	for(register int i=1,j=k;i<=n;i++,j=1ll*j*k%mod){
		ans+=1ll*j*q[i-1]%mod*h[i+1]%mod;
		ans%=mod;
	}
	exgcd(m,mod,x,y);
	printf("%lld\n",1ll*ans*x%mod);
	return 0;
}
2022/7/8 18:30
加载中...