这不就是逆元模板吗?为甚么我后两个点TLE了呢?
代码如下:
#include<bits/stdc++.h>
using namespace std;
int n,p,k,a,s=1,ans;
int qpow(int a,int b){
int s=1;
while(b){
if(b&1) s=s*a%p;
a=a*a%p;
b>>=1;
}
return s;
}
int main(){
scanf("%d%d%d",&n,&p,&k);
for(int i=1;i<=n;i++){
scanf("%d",&a);
s=s*k%p;
ans=(ans+s*qpow(a,p-2))%p;
}
printf("%d",ans);
return 0;
}