#aTCODERDPROUNDM. hantina 个人中心 用户设置 练习情况 我的题库 我的专栏 收藏夹 我的工单 锁定登出 AT_dp_m Candies

hantina 个人中心 用户设置 练习情况 我的题库 我的专栏 收藏夹 我的工单 锁定登出 AT_dp_m Candies

AT_dp_m Candies

题目描述

NN 个孩子。孩子们被编号为 1,2,,N1, 2, \ldots, N

他们要一起分配 KK 颗糖果。此时,对于每个 ii1iN1 \leq i \leq N),第 ii 个孩子能分到的糖果数必须在 00aia_i 之间(包含 00aia_i)。此外,所有糖果必须全部分完,不能有剩余。

请问有多少种不同的分配糖果的方法?请输出答案对 109+710^9 + 7 取模后的结果。这里,若存在某个孩子分到的糖果数不同,则认为两种分配方法不同。

输入格式

输入以如下格式从标准输入给出。

NN KK a1a_1 a2a_2 \ldots aNa_N

输出格式

输出分配糖果的方法数对 109+710^9 + 7 取模后的结果。

输入输出样例 #1

输入 #1

3 4
1 2 3

输出 #1

5

输入输出样例 #2

输入 #2

1 10
9

输出 #2

0

输入输出样例 #3

输入 #3

2 0
0 0

输出 #3

1

输入输出样例 #4

输入 #4

4 100000
100000 100000 100000 100000

输出 #4

665683269

说明/提示

限制条件

  • 所有输入均为整数。
  • 1N1001 \leq N \leq 100
  • 0K1050 \leq K \leq 10^5
  • 0aiK0 \leq a_i \leq K

样例解释 1

分配糖果的方法共有 55 种。对于每个序列,第 ii 个元素表示第 ii 个孩子分到的糖果数。

  • (0,1,3)(0, 1, 3)
  • (0,2,2)(0, 2, 2)
  • (1,0,3)(1, 0, 3)
  • (1,1,2)(1, 1, 2)
  • (1,2,1)(1, 2, 1)

样例解释 2

也有可能不存在任何一种分配糖果的方法。

样例解释 3

分配糖果的方法只有 11 种。

  • (0,0)(0, 0)

样例解释 4

不要忘记将答案对 109+710^9 + 7 取模后输出。

由 ChatGPT 4.1 翻译