atcoder#ABC208F. [ABC208F] Cumulative Sum

[ABC208F] Cumulative Sum

配点 : 600600

問題文

非負整数 n,mn, m に対して関数 f(n,m)f(n, m) を正の整数 KK を用いて次のように定めます。

$\displaystyle f(n, m) = \begin{cases} 0 & (n = 0) \\ n^K & (n \gt 0, m = 0) \\ f(n-1, m) + f(n, m-1) & (n \gt 0, m \gt 0) \end{cases}$

N,M,KN, M, K が与えられるので、f(N,M)f(N, M)(109+7)(10 ^ 9 + 7) で割った余りを求めてください。

制約

  • 0N10180 \leq N \leq 10^{18}
  • 0M300 \leq M \leq 30
  • 1K2.5×1061 \leq K \leq 2.5 \times 10^6
  • 入力は全て整数である。

入力

入力は以下の形式で標準入力から与えられる。

NN MM KK

出力

f(N,M)f(N, M)(109+7)(10 ^ 9 + 7) で割った余りを出力せよ。

3 4 2
35

K=2K = 2 の時、 n3,m4n \leq 3, m \leq 4 における f(n,m)f(n, m) の値は次のようになります。

m=0m = 0 m=1m = 1 m=2m = 2 m=3m = 3 m=4m = 4
n=0n = 0 00
n=1n = 1 11
n=2n = 2 44 55 66 77 88
n=3n = 3 99 1414 2020 2727 3535
0 1 2
0
1000000000000000000 30 123456
297085514