服了,改了一个小时愣是没改对
查看原帖
服了,改了一个小时愣是没改对
736891
Eternality楼主2022/10/18 11:42
#include<bits/stdc++.h>
using namespace std;

const int N=5e6+10;
int n,p,k;
int a[N];
long long mul2[N],mul1[N];

int power(int a,int b)
{
	int ans=1%p;
	for(;b;b>>=1)
	{
		if(b&1)ans=1ll*ans*a%p;
		a=1ll*a*a%p;
	}
	return ans;
}

signed main()
{
	freopen("P5431_1.in","r",stdin);
	freopen("fsag.out","w",stdout);
	
	scanf("%d%d%d",&n,&p,&k);
//	cout<<n<<p<<k<<endl;
	mul1[0]=mul2[n+1]=1;
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
//		cout<<a[i]<<endl;
		mul1[i]=1ll*mul1[i-1]*a[i]%p;
		
	}
	for(int i=n;i>=1;i--)
	{
		mul2[i]=1ll*mul2[i+1]*a[i]%p;
	}
//	cout<<mul1[n]<<"          "<<mul2[1]<<endl;
	int ans=power(mul1[n],p-2);
//	cout<<ans<<endl;
	int kk=0;
	int f=1;
	for(int i=1;i<=n;i++)
	{
		f=1ll*f*k%p;
		kk=1ll*(kk+f*mul1[i-1]*mul2[i+1])%p;
	}
	cout<<1ll*ans*kk%p;
	return 0;
}
2022/10/18 11:42
加载中...