#iai16a1. 斯特林数(Stirling Numbers)
斯特林数(Stirling Numbers)
斯特林数(Stirling Numbers)
题目描述
斯特林数 是组合数学中一个重要的研究对象。 的意义是将 1 到 n 的 n 个整数,分成 m 个小组的方案数。譬如 ,因为:
{1}, {2,3} {2}, {1,3} {3}, {1,2}
给定 n 与 m,求 。由于可能很大,输出答案模 1,000,000,007 的余数。
提示:
$\{n\brace m\} = \{n-1\brace m-1\} + m \cdot \{n-1\brace m\}$
$\{n\brace m\} = \frac{1}{m!} \sum_{0 \le k < m} (-1)^k \binom{m}{k} (m-k)^n$
输入格式
单独一行:两个正整数 n 与 m。
输出格式
单个自然数:表示方案数模指定数字的余数。
数据范围
- 对于 25% 的数据:n, m ≤ 20
- 对于 50% 的数据:n, m ≤ 100
- 对于 75% 的数据:n, m ≤ 10000
- 对于 100% 的数据:1 ≤ n ≤ 10⁹,1 ≤ m ≤ 10⁶
样例输入 #1
5 2
样例输出 #1
15
样例输入 #2
1000 100
样例输出 #2
34640565
知识点与难度
本题涉及的知识点从属于 GESP 7级,难度等级:⭐⭐⭐。
测试点分布
| Subtask | 分值 | 测试点编号 | 说明 |
|---|---|---|---|
| 0 | 10 | 1~2 | 样例 |
| 1 | 20 | 3~8 | 小规模 n,m≤20 |
| 2 | 15 | 9~11 | Hack: m>n / m=1 / m=n |
| 3 | 30 | 12~20 | 中大规模 n,m≤10000 |
| 4 | 25 | 21~25 | 大规模 n=10⁹,m=10⁶ |