30分求调
查看原帖
30分求调
428449
Amon_Xolotl楼主2023/8/20 15:13
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=5e6+7;
int n,p,k,x,y;
int sum[N];
inline int read()
{
    int x=0,f=1;
    char c=getchar();
    while(c>'9'||c<'0')
	{
        if(c=='-') f=-1;
        c=getchar();
    }
    while(c>='0'&&c<='9')
	{
        x=x*10+c-'0';
        c=getchar();
    }
    return x*f;
}
void exgcd(int a,int b,int& x,int& y)
{
	if(b==0)
	{
		x=1,y=0;
		return;
	}
	exgcd(b,a%b,y,x);
	y-=a/b*x;
}
int get_(int a)
{
	int b=p-2;
	int ret=1;
	while(b)
	{
		if(b&1)
		{
			ret=(ll)ret*a%p;
		}
		a=(ll)a*a%p;
		b>>=1;
	}
	return ret;
}
void write(ll x)
{
	if(x<0)
	{
		putchar('-');
		
		x=-x;
	}
	if(x>=10)
	{
		write(x/10);
	}
	putchar(x%10+'0');
	return;
}
int main()
{
	n=read(),p=read(),k=read();
	sum[0]=1;
	for(int i=1;i<=n;++i)
	{
		sum[i]=(ll)sum[i-1]*k%p;
	}
	int t;
	ll ans=0;
	for(int i=1;i<=n;++i)
	{
		int a;
		a=read();
		ans=(ans+(ll)sum[i]*get_(a)%p)%p;
	}
	write(ans);
	return 0;
}
2023/8/20 15:13
加载中...