Wannafly挑战赛16 A 取石子(全排列)


解析:

取石子都是一个个取的。
所以在第一袋里取2个就可以看成是在取上一袋和取下一袋之间间隔2个1
这样(a+b+c+d)!表示每一个石子都不同的取的方案数。
但同一袋的石子数是相同的,所以除上a!(因为多乘上了同一袋石子的变化的方案数,即同一袋石子在总的位置上确定后只有一种情况,但之前算的时候多乘上了a!)。b,c,d同理

import math
"""
a,b,c,d=raw_input().strip().split()
a=int(a)
b=int(b)
c=int(c)
d=int(d)
"""
a,b,c,d=map(int,raw_input().split())
ans=math.factorial(a+b+c+d)
ans1=math.factorial(a)
ans2=math.factorial(b)
ans3=math.factorial(c)
ans4=math.factorial(d)
print(ans//ans1//ans2//ans3//ans4%1000000007)

猜你喜欢

转载自blog.csdn.net/qq_37025443/article/details/80459142
今日推荐