AcWing 3165. 第一类斯特林数
原题链接
中等
作者:
皓首不倦
,
2021-05-03 16:28:17
,
所有人可见
,
阅读 469
'''
第一类斯特林数求解, s(ii, k)表示将1~ii这些数分割成k个圆排列的不同的方案数
dp(ii, k) = dp(ii-1, k-1) + (ii-1) * dp(ii-1, k)
'''
MOD = 1000000007
N = 1000
s = [[0] * (N+1) for _ in range(N+1)]
fac_val = 1 # 阶乘数值
s[1][1] = 1
for i in range(2, N+1):
s[i][1] = fac_val
for j in range(2, i):
s[i][j] = s[i-1][j-1] + (i-1) * s[i-1][j]
s[i][j] %= MOD
s[i][i] = 1
fac_val *= i
fac_val %= MOD
# 返回第一类斯特林数s(n, k)数值
def stirling1(n, k):
return s[n][k]
n, k = map(int, input().split())
print(stirling1(n, k))