乘法逆元2,WA,不解
查看原帖
乘法逆元2,WA,不解
344382
lmrttx楼主2021/1/3 09:32

代码好像没问题啊

然而样例无输出卡死

测试点时间很快,但是全WA,没有卡时间。

做法用的是 珂爱 的做法

#include<cstdio>
#include<cctype>
#define MAX 5000005
#define int long long

int n,k,mod,pre[MAX],suf[MAX],a[MAX],ans;

char buf[(int)1e8],*ss=buf;
inline int init(){buf[fread(buf,1,(int)1e8-1,stdin)]='\n';fclose(stdin);return 0;}
const int __START__=init();
inline int read(){
    int d=0;
    while(!isdigit(*ss))++ss;
    while(isdigit(*ss))d=d*10+(*ss++^'0');
    return d;
}

inline int inv(const int p){
	if(p==1)return 1;
	return ((mod-mod/p) * inv(mod%p)%mod);
}

signed main(){
	n=read();mod=read();k=read();
	for(register int i=*pre=suf[n+1]=1;i<=n;++i){
		a[i]=read();
		pre[i]=pre[i-1] * a[i] %mod;
	}
	for(register int i=n;i;--i){
		suf[i]==suf[i+1] * a[i] %mod;
	}
	for(register int i=1,j=k;i<=n;++i,j=j*k%mod){
		ans=(ans +  j*pre[i-1] %mod * suf[i+1]) %mod;
	}
	printf("%lld",ans *  inv(pre[n])%mod);
	return 0;
}
2021/1/3 09:32
加载中...