没错,这题目就是为吸引你们点进来的(悬赏关注)
mod=998244353,x,ch;
#define i64 long long
read(){
x=0,ch=getchar();
while(!isdigit(ch))
ch=getchar();
while(isdigit(ch))
x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
return x;
}
qpow(p,k){
i64 b=p,a=1;
while(k){
k&1&&(a=a*b%mod);
b=b*b%mod;
k>>=1;
}
return a;
}
i64 n,p;
main(ans){
scanf("%lld%lld",&n,&p),p%=mod;
while(n--)
ans=ans*(qpow(p,read())+1)%mod;
printf("%lld",ans);
}
以上代码中的一行改为i64 qpow(i64 p,i64 k){即可AC,否则只得2分!我不明白这个返回值也是在int范围里,导入的p和k也是在int范围,为什么非得采取long long//