RT悬赏一关注
#include<bits/stdc++.h>
using namespace std;
long long n,p,k,s=1,a[5000000+10],sum,ki=1,pre[5000000+10],suf[5000000+10];
long long ksm(long long a,long long b,long long p){
if(b==0)return 1;
if(b%2==1){return a*ksm(a,b-1,p)%p;}
else{
long long t=ksm(a,b/2,p);
return t*t%p;
}
}
bool isprime(int x){
for(int i=2;i<=sqrt(x);i++){if(x%i==0)return 0;}
return 1;
}
int main(){
cin>>n>>p>>k;
pre[0]=1;suf[n+1]=1;
for(int i=1;i<=n;i++){
cin>>a[i];
s*=a[i]%p;
pre[i]=(pre[i-1]*a[i])%p;
}
for(int i=n;i>=1;i--)suf[i]=(suf[i+1]*a[i])%p;
for(int i=1;i<=n;i++){
ki*=k%p;
ki%=p;
sum+=(ki*pre[n-1]*suf[n+1])%p;
}
cout<<(sum*ksm(s,p-2,p))%p;
}