atcoder#CF17FINALG. Mancala

Mancala

配点 : 10001000

問題文

以下のようなゲームを考えます。

  • 11 列に並んだ NN 個のマスとたくさんの石を用意する。
  • 最初に、マス i (1iN)i\ (1 \leq i \leq N)aia_i 個の石を入れる。
  • プレイヤーは「ちょうど ii 個の石が入っているようなマス ii11 つ選び、そこに入っている石を全て捨て、マス 11 からマス i1i-1 までの i1i-1 個のマスに石を 11 つずつ追加する」という操作を好きなだけ行う。
  • 最終的にマスに残った石の個数の合計がスコアとなる。

長さ NN の数列 aa に対してこのゲームを行ったときのスコアとして考えられる最小値を f(a)f(a) とします。

このとき、長さが NN で各要素が 00 以上 KK 以下であるような全ての数列 aa についての f(a)f(a) の総和はいくつになるでしょうか? 答えは非常に大きくなる可能性があるため、1000000007(=109+7)1000000007 (= 10^9+7) で割った余りを求めてください。

制約

  • 1N1001 \leq N \leq 100
  • 1KN1 \leq K \leq N

入力

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

NN KK

出力

f(a)f(a) の総和を 1000000007(=109+7)1000000007 (= 10^9+7) で割った余りを出力せよ。

2 2
10

長さが 22 で各要素が 00 以上 22 以下であるような数列 aa99 通り考えられますが、それぞれに対する f(a)f(a) の値とそれを達成するための操作の例は以下の通りです。

  • f({0,0})f(\{0,0\})00(なにも操作できない)
  • f({0,1})f(\{0,1\})11(なにも操作できない)
  • f({0,2})f(\{0,2\})00(マス 22 、マス 11 の順に操作する)
  • f({1,0})f(\{1,0\})00(マス 11 を選ぶ)
  • f({1,1})f(\{1,1\})11(マス 11 を選ぶ)
  • f({1,2})f(\{1,2\})00(マス 11 、マス 22 、マス 11 の順に操作する)
  • f({2,0})f(\{2,0\})22(なにも操作できない)
  • f({2,1})f(\{2,1\})33(なにも操作できない)
  • f({2,2})f(\{2,2\})33(マス 22 を選ぶ)
20 17
983853488