样例过了,但是全wa,求调
查看原帖
样例过了,但是全wa,求调
1110115
chronobox楼主2024/1/18 02:09
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=5e6+10;
int a[N],s[N],t[N],inv[N];
int exgcd(int a,int b,int &x,int &y)
{
    if(b==0)
    {
        x=1,y=0;
        return a;
    }
    int xx,yy,d;
    d=exgcd(b,a%b,xx,yy);
    x=yy,y=xx-a/b*yy;
    return d;
}
int quickpow(int a,int b,int p)
{
    int res=1;
    while(b)
    {
        if(b&1) res=res*a%p;
        a=a*a%p;
        b>>=1;
    }
    return res;
}
int read()
{
    int x=0,flag=1;char c;
    while((c=getchar())<'0' || c>'9') if(c=='-') flag=-1;
    while(c>='0' && c<='9') x=(x<<3)+(x<<1)+(c^48),c=getchar();
    return x*flag;
}
signed main()
{
    int n,p,k;
    n=read(),p=read(),k=read();
    int ans=0;
    s[0]=1;
    for(int i=1;i<=n;i++)a[i]=read();
    for(int i=1;i<=n;i++)s[i]=s[i-1]*a[i]%p;
    t[n]=quickpow(s[n],p-2,p);
    for(int i=n-1;i;i--)t[i]=t[i+1]*a[i+1]%p;
    int c=k;
    for(int i=1;i<=n;i++) {
        ans=(ans+c*(s[i-1]*t[i]))%p;
        c*=k;
    }
    cout<<ans;
}
2024/1/18 02:09
加载中...