bzoj 3142 数学

找规律后可以之后答案就是

k^(m-1)*(n-(m-1)*k)+(m+(m-1)*k+1)*k^(m-1) div 2

/**************************************************************
    Problem: 3142
    User: BLADEVIL
    Language: Pascal
    Result: Accepted
    Time:0 ms
    Memory:224 kb
****************************************************************/
 
//By BLADEVIL
var
    n, m                    :int64;
    k, p, x                 :int64;
     
function mi(a,b:int64):int64;
var
    sum, ans                :int64;
begin
    sum:=a; ans:=1;
    while b>0 do
    begin
        if b mod 2=1 then ans:=ans*sum mod p;
        sum:=sum*sum mod p;
        b:=b div 2;
    end;
    exit(ans);
end;
begin
    readln(n,k,m,p);
    dec(k);
    x:=mi(m,k-1); 
    writeln(int64(n mod p*m-m*(m+1) div 2 mod p*k+p*1000000000) mod p*x mod p);
end.
原文地址:https://www.cnblogs.com/BLADEVIL/p/3500920.html