2023-12-09 18:42:21 +08:00
|
|
|
|
<p>你的音乐播放器里有 <code>n</code> 首不同的歌,在旅途中,你计划听 <code>goal</code> 首歌(不一定不同,即,允许歌曲重复)。你将会按如下规则创建播放列表:</p>
|
2022-03-27 20:46:41 +08:00
|
|
|
|
|
|
|
|
|
<ul>
|
2023-12-09 18:42:21 +08:00
|
|
|
|
<li>每首歌 <strong>至少播放一次</strong> 。</li>
|
|
|
|
|
<li>一首歌只有在其他 <code>k</code> 首歌播放完之后才能再次播放。</li>
|
2022-03-27 20:46:41 +08:00
|
|
|
|
</ul>
|
|
|
|
|
|
2023-12-09 18:42:21 +08:00
|
|
|
|
<p>给你 <code>n</code>、<code>goal</code> 和 <code>k</code> ,返回可以满足要求的播放列表的数量。由于答案可能非常大,请返回对 <code>10<sup>9</sup> + 7</code> <strong>取余</strong> 的结果。</p>
|
|
|
|
|
|
2022-03-27 20:46:41 +08:00
|
|
|
|
|
|
|
|
|
<p><strong>示例 1:</strong></p>
|
|
|
|
|
|
2023-12-09 18:42:21 +08:00
|
|
|
|
<pre>
|
|
|
|
|
<strong>输入:</strong>n = 3, goal = 3, k = 1
|
2022-03-27 20:46:41 +08:00
|
|
|
|
<strong>输出:</strong>6
|
2023-12-09 18:42:21 +08:00
|
|
|
|
<strong>解释:</strong>有 6 种可能的播放列表。[1, 2, 3],[1, 3, 2],[2, 1, 3],[2, 3, 1],[3, 1, 2],[3, 2, 1] 。
|
2022-03-27 20:46:41 +08:00
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p><strong>示例 2:</strong></p>
|
|
|
|
|
|
2023-12-09 18:42:21 +08:00
|
|
|
|
<pre>
|
|
|
|
|
<strong>输入:</strong>n = 2, goal = 3, k = 0
|
2022-03-27 20:46:41 +08:00
|
|
|
|
<strong>输出:</strong>6
|
2023-12-09 18:42:21 +08:00
|
|
|
|
<strong>解释:</strong>有 6 种可能的播放列表。[1, 1, 2],[1, 2, 1],[2, 1, 1],[2, 2, 1],[2, 1, 2],[1, 2, 2] 。
|
2022-03-27 20:46:41 +08:00
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p><strong>示例 3:</strong></p>
|
|
|
|
|
|
2023-12-09 18:42:21 +08:00
|
|
|
|
<pre>
|
|
|
|
|
<strong>输入:</strong>n = 2, goal = 3, k = 1
|
2022-03-27 20:46:41 +08:00
|
|
|
|
<strong>输出:</strong>2
|
2023-12-09 18:42:21 +08:00
|
|
|
|
<strong>解释:</strong>有 2 种可能的播放列表。[1, 2, 1],[2, 1, 2] 。
|
2022-03-27 20:46:41 +08:00
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p> </p>
|
|
|
|
|
|
|
|
|
|
<p><strong>提示:</strong></p>
|
|
|
|
|
|
2023-12-09 18:42:21 +08:00
|
|
|
|
<ul>
|
|
|
|
|
<li><code>0 <= k < n <= goal <= 100</code></li>
|
|
|
|
|
</ul>
|