报错代码:g++: 编译器内部错误:File size limit exceeded signal terminated program as 请提交一份完整的错误报告, 如有可能请附上经预处理后的源文件。 参阅 https://gcc.gnu.org/bugs/ 以获取指示。
#include<cstdio>
#define int long long
int fast_pow(int a,int b,int MOD)
{
int rt = 1;
while(b!=0)
{
if(b%2==1)
{
rt*=a;
rt%=MOD;
}
a*=a;
a%=MOD;
b/=2;
}
return rt;
}
int inv(int x,int MOD)
{
return fast_pow(x,MOD-2,MOD);
}
int qzj[5000001] = {1};
int hzj[5000001] = {1};
int n,p,k;
int a[5000001];
signed main()
{
scanf("%lld%lld%lld",&n,&p,&k);
int i,j;
for(i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
}
qzj[1] = a[1];
hzj[n] = a[n];
hzj[n+1]=1;
qzj[0] = 1;
int s = 1;
for(i=2;i<=n;i++)
{
qzj[i] = a[i]*qzj[i-1];
qzj[i]%=p;
j = n-i+1;
hzj[j] = hzj[j+1]*a[j];
hzj[j]%=p;
}
int zc = k;
int ans = 0;
for(i=1;i<=n;i++)
{
s*=a[i];
s%=p;
ans += (k*((qzj[i-1]*hzj[i+1])%p))%p;
ans%=p;
k *= zc;
k %= p;
}
printf("%lld",(ans*inv(s,p))%p);
}