描述
GreyAnts 遇到了一道难题:
给定n个数{A1, A2, …… ,An}。
对于每次询问 k , 求出 ( (A1*A2*A3*……*An)/Ak )%mod;
请你帮忙解决它。
ps: mod 为素数。
#include<stdio.h>
long long int a[100005],b[100005];
int main()
{
int n,m,mod;
while(scanf("%d%d%d",&n,&m,&mod)==3)
{
a[0]=b[0]=a[n+1]=b[n+1]=1;
int i,k;
for(i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
b[i]=b[i-1]*a[i]%mod;
}
for(i=n;i>=1;i--)
a[i]=a[i+1]*a[i]%mod;
while(m--)
{
scanf("%d",&k);
printf("%lld ",b[k-1]*a[k+1]%mod);
}
printf("\n");
}
return 0;
}