勾长公式()-其他
勾长公式()
正解是 dp,但是可以用勾长公式做,很有意思。
链接
import math
while True:
n = int(input())
if n == 0:
break
k = list(map(int, input().split()))
ans = math.factorial(sum(k))
for i in range(0, n):
for j in range(0, k[i]):
cur = 1
cur = cur + k[i] - 1 - j
for s in range(i + 1, n):
if k[s] > j:
cur = cur + 1
ans = ans // cur
print(ans)
————————
正解是 dp,但是可以用勾长公式做,很有意思。
链接
import math
while True:
n = int(input())
if n == 0:
break
k = list(map(int, input().split()))
ans = math.factorial(sum(k))
for i in range(0, n):
for j in range(0, k[i]):
cur = 1
cur = cur + k[i] - 1 - j
for s in range(i + 1, n):
if k[s] > j:
cur = cur + 1
ans = ans // cur
print(ans)