AT_diverta2019_2_e Balanced Piles

题目描述

有 $N$ 个格子横向排列,从左到右依次编号为 $1$ 到 $N$。高桥君打算在这些格子上堆积木。初始时,每个格子上都没有积木。 高桥君希望将积木堆得均匀,他会重复以下操作,直到每个格子上都恰好堆有 $H$ 个积木为止: - 设当前所有格子中积木数的最大值为 $M$,最小值为 $m$。从所有积木数为 $m$ 的格子中任选一个(如果有多个可以任选),在该格子上堆若干个积木,使得该格子的积木数变为 $M$ 以上且不超过 $M+D$,即堆到 $M$、$M+1$、$\dots$、$M+D$ 中的某一个数。 请你帮高桥君计算,经过若干次上述操作后,使所有格子上都恰好有 $H$ 个积木的方法总数。由于答案可能非常大,请输出对 $10^9+7$ 取模后的结果。

输入格式

输入为一行,包含三个整数: > $N$ $H$ $D$

输出格式

输出使所有格子上都恰好有 $H$ 个积木的方法总数,对 $10^9+7$ 取模。

说明/提示

### 限制条件 - $2 \leq N \leq 10^6$ - $1 \leq D \leq H \leq 10^6$ - 输入均为整数 ### 样例解释 1 (格子 $1$ 上的积木数,格子 $2$ 上的积木数)可以按如下方式变化: - $(0, 0) \to (0, 1) \to (1, 1) \to (1, 2) \to (2, 2)$ - $(0, 0) \to (0, 1) \to (1, 1) \to (2, 1) \to (2, 2)$ - $(0, 0) \to (0, 1) \to (2, 1) \to (2, 2)$ - $(0, 0) \to (1, 0) \to (1, 1) \to (1, 2) \to (2, 2)$ - $(0, 0) \to (1, 0) \to (1, 1) \to (2, 1) \to (2, 2)$ - $(0, 0) \to (1, 0) \to (1, 2) \to (2, 2)$ 因此,使所有格子上都恰好有 $2$ 个积木的方法总数为 $6$。 ### 样例解释 3 注意要输出对 $10^9+7$ 取模后的结果。 由 ChatGPT 4.1 翻译