https://www.lydsy.com/JudgeOnline/problem.php?id=3142
推一推,答案应该就是 \(nm^{k-1}-(k-1)m^{k-2}\dfrac{m(m+1)}{2}\)。
#include <bits/stdc++.h>
using namespace std;
typedef long long i64;
i64 n, m, k, MOD;
i64 sub(i64 a, i64 b) {
return (a -= b) < 0 ? a + MOD : a;
}
i64 mul(i64 a, i64 b) {
return a * b % MOD;
}
i64 power(i64 a, i64 e) {
i64 ret = 1;
for (; e; e >>= 1) {
if (e & 1)
ret = mul(ret, a);
a = mul(a, a);
}
return ret;
}
int main() {
while (~scanf("%lld %lld %lld %lld", &n, &k, &m, &MOD)) {
n %= MOD;
i64 A = mul(n, power(m, k - 1));
i64 B = mul(k - 1, mul(power(m, k - 2), m * (m + 1) / 2 % MOD));
printf("%lld\n", sub(A, B));
}
}