给定$n$,组成四重奏的方式有
$$C_4(n)=\frac{(12n)!}{(4!)^{3n}(3n)!},$$
种,组成三重奏的方式有
$$C_3(n)=\frac{(12n)!}{(3!)^{4n}(4n)!},$$
种。设对每种四重奏的分法,共有$F_n$种符合要求的三重奏分法,同样那个设对每种三重奏的分法,共有$G_n$种符合要求的三重奏分法,则有
$$F_nC_4(n)=G_nC_3(n),$$
这是因为可将题目要求理解为在分别有$C_4(n)$和$C_3(n)$个顶点的二分图中添加边所得的正则二分图(Biregular graph)。从而
$$f(12n)=F_n=G_n\times 24^{3n}\times(4n)! $$
$G_n$的值可以递推计算,最终结果是$75780067$。
注:为便于用内建函数pow作快速幂,以下代码为Python 3。
N=600
mod=10**9+7
f=lambda m,k:(1,m,m*(m-1)//2,m*(m-1)*(m-2)//6,m*(m-1)*(m-2)*(m-3)//24)[k]
sList=[(4,0,0),(3,1,0),(3,0,1),(2,2,0),(2,1,1),(2,0,2),(1,3,0),(1,2,1),(1,1,2),(1,0,3),(0,4,0),(0,3,1),(0,2,2),(0,1,3),(0,0,4)]
d={(N//3,0,0):1}
for i in range (N//4):
d2={}
for (p,q,r),s in d.items():
for u,v,w in sList:
if u<=p and v<=q and w<=r:
k=(p-u,q-v+u,r-w+v)
d2[k]=(d2.get(k,0)+f(p,u)*f(q,v)*f(r,w)*s)%mod
d=d2
x=1
for k in range(2,N//3+1):
x=x*k%mod
print(d[(0,0,0)]*pow(24,N//4,mod)*pow(x,mod-2,mod)%mod)
|