这道题我打算使用逆元来做,但是逆元和快速幂算出来的结果都是对的,但是最终输出不对,0分,前三个点WA,后两个TLE
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N=5e6+6;
int ksm(ll m,ll n,ll mod){
ll ans=1;
while(n){
if(n&1)
ans=m*ans%mod;
m=m*m%mod;
n/=2;
}
return ans;
}
int exgcd(int a,int b,int &x,int &y){
if(!b){
x=1,y=0;
return a;
}
int ans = exgcd(b,a%b,x,y);
int t = x;
x = y; // x1 = y2
y = t - (a/b) * y; // y1 = x2 - (a/b) * y2
return ans;
}
int main(){
int a,b,c,x,y,ans[N];
int n,p,k;
cin>>n>>p>>k;
for(int i=1;i<=n;i++){
cin>>a;
b=p;
exgcd(a,b,x,y); // ax+by=1 ax = 1 (mod b)
x = (x % b + b) % b;
ans[i]=x;
}
long long cnt=0;
for(int i=1;i<=n;i++)
{
cnt+=ksm(k,i,p)*ans[i];
//cout<<ans[i]<<endl;
//cout<<ksm(k,i,p)<<endl;
}
cout<<cnt<<endl;
return 0;
}