数组都懒得开了,贴代码吧忒简单
var n,k,m,p,x:int64; function f(x,y:int64):int64; begin if y=0 then exit(1); f:=f(x,y>>1); f:=f*f mod p; if y and 1=1 then f:=f*x mod p; end; begin read(n,k,m,p); x:=((m mod p)*(n mod p)-(m*(m+1)>>1 mod p)*(k-1))mod p; if x<0 then x:=x+trunc(abs(x)/p)*p+p; x:=x mod p; writeln(f(m,k-2)*x mod p); end.
不打广告了,再让我笑一会233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333……(背过气了)