フェルマーの小定理.
問題文通りに考えると, 数列 \(A : N \rightarrow K\) の取り方は \(K^{N}\) 通り. 点数の付け方は \(K^{N} \rightarrow M\) であるから,\(M^{(K^{N})}\) 通り. よって,フェルマーの小定理で求まる.
注意
- 底 \(M\) が \(0\) のケースはフェルマーの小定理が使えないので個別に計算する.
- \(M\) の指数は mod \(p-1\) で求める.
使っている記号,マクロ等 "https://ecsmtlir.hatenablog.com/entry/2022/12/23/131925"
using mint = ModLL<998244353>;
using mint1 = ModLL<998244352>;
int main() {
ll n,k,m; cin >> n >> k >> m;
mint mm(m);
mint1 mk(k);
if(mm.val() == 0) cout << 0 << endl;
else{
cout << mm.pow(mk.pow(n).val()).val() << endl;
}
return 0;
}