模板题30pts求助
查看原帖
模板题30pts求助
310773
PCCP楼主2023/7/7 10:32

RT,这份代码是按着oiwiki上的方法来写的,但是只有30分,求助各位大佬帮忙看看哪里出错了。

#include<iostream>
#include<cstdio>
using namespace std;
const int N=3e6+10;
long long n,p,k,s[N],a[N],ans[N],res;
long long ms(long long x,long long y){
    long long tem=1;
    x=(x%p+p)%p;
    while(y){
    	if(y&1){
    		tem=(x*tem)%p;
		}
		x=(x*x)%p;
		y>>=1;
	}
	return tem;
}
int main(){
	scanf("%lld%lld%lld",&n,&p,&k);
	s[0]=1;
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		s[i]=s[i-1]*a[i]%p;
	}
	ans[n]=ms(s[n],p-2);
	for(int i=n;i>=1;i--){
		ans[i-1]=ans[i]*a[i]%p;
	}
	long long u=1,v=0;
	for(int i=n;i>=1;i--){
		u=u*k%p;
		res=(res+(ans[i]*s[i-1])%p)*k%p;
	}
	printf("%lld",res%p);
}
2023/7/7 10:32
加载中...