atcoder#ARC110D. [ARC110D] Binomial Coefficient is Fun

[ARC110D] Binomial Coefficient is Fun

配点 : 600600

問題文

長さが NN の非負整数列 AA があります。

長さが NN で、和が MM 以下である任意の非負整数列 BB について、i=1N(BiAi)\prod _{i = 1} ^N \dbinom{B_i}{A_i} の値を計算し、その総和を 109+710^9 + 7 で割った余りを出力してください。

ここで (BiAi)\dbinom{B_i}{A_i} は、BiB_i 個のものの中から AiA_i 個のものを選ぶ場合の数(二項係数)であり、Bi<AiB_i < A_i のときは 00 です。

制約

  • 入力は全て整数
  • 1N20001 \leq N \leq 2000
  • 1M1091 \leq M \leq 10^9
  • 0Ai20000 \leq A_i \leq 2000

入力

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

NN MM

A1A_1 A2A_2 \ldots ANA_N

出力

i=1N(BiAi)\prod _{i = 1} ^N \dbinom{B_i}{A_i} の総和を 109+710^9 + 7 で割った余りを出力せよ。

3 5
1 2 1
8

i=1N(BiAi)\prod _{i = 1} ^N \dbinom{B_i}{A_i}11 以上となるような数列 BB の定め方は、以下の 44 通りです。

  • B=1,2,1B = 1, 2, 1 とする。このとき $\prod _{i = 1} ^N \dbinom{B_i}{A_i} = \dbinom{1}{1} \times \dbinom{2}{2} \times \dbinom{1}{1} = 1$ である
  • B=2,2,1B = 2, 2, 1 とする。このとき $\prod _{i = 1} ^N \dbinom{B_i}{A_i} = \dbinom{2}{1} \times \dbinom{2}{2} \times \dbinom{1}{1} = 2$ である
  • B=1,3,1B = 1, 3, 1 とする。このとき $\prod _{i = 1} ^N \dbinom{B_i}{A_i} = \dbinom{1}{1} \times \dbinom{3}{2} \times \dbinom{1}{1} = 3$ である
  • B=1,2,2B = 1, 2, 2 とする。このとき $\prod _{i = 1} ^N \dbinom{B_i}{A_i} = \dbinom{1}{1} \times \dbinom{2}{2} \times \dbinom{2}{1} = 2$ である

よって答えは 1+2+3+2=81 + 2 + 3 + 2 = 8 です。

10 998244353
31 41 59 26 53 58 97 93 23 84
642612171