AT_diverta2019_2_e.Balanced Piles
省选/NOI-
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
有 N 个格子横向排列,从左到右依次编号为 1 到 N。高桥君打算在这些格子上堆积木。初始时,每个格子上都没有积木。
高桥君希望将积木堆得均匀,他会重复以下操作,直到每个格子上都恰好堆有 H 个积木为止:
- 设当前所有格子中积木数的最大值为 M,最小值为 m。从所有积木数为 m 的格子中任选一个(如果有多个可以任选),在该格子上堆若干个积木,使得该格子的积木数变为 M 以上且不超过 M+D,即堆到 M、M+1、…、M+D 中的某一个数。
请你帮高桥君计算,经过若干次上述操作后,使所有格子上都恰好有 H 个积木的方法总数。由于答案可能非常大,请输出对 109+7 取模后的结果。
输入格式
输入为一行,包含三个整数:
N H D
输出格式
输出使所有格子上都恰好有 H 个积木的方法总数,对 109+7 取模。
输入输出样例
输入#1
2 2 1
输出#1
6
输入#2
2 30 15
输出#2
94182806
输入#3
31415 9265 3589
输出#3
312069529
说明/提示
限制条件
- 2≤N≤106
- 1≤D≤H≤106
- 输入均为整数
样例解释 1
(格子 1 上的积木数,格子 2 上的积木数)可以按如下方式变化:
- (0,0)→(0,1)→(1,1)→(1,2)→(2,2)
- (0,0)→(0,1)→(1,1)→(2,1)→(2,2)
- (0,0)→(0,1)→(2,1)→(2,2)
- (0,0)→(1,0)→(1,1)→(1,2)→(2,2)
- (0,0)→(1,0)→(1,1)→(2,1)→(2,2)
- (0,0)→(1,0)→(1,2)→(2,2)
因此,使所有格子上都恰好有 2 个积木的方法总数为 6。
样例解释 3
注意要输出对 109+7 取模后的结果。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?