hdu 2065 "红色病毒"问题 (母函数)
指数型母函数问题
引例:假设有8个元素,其中a1重复3次,
a2重复2次,a3重复3次。从中取r个组合,,
这样,对于一个多重集,其中a1重复n1次,a2 重复n2次,…,ak重复nk次,
从中取r个排列的不同排列数所对应的指数型母函数为
G(x)=(1+x/1!+x^2/2!+…——x^n1/n1!)(1+x/1!+x^2/2!+…)…(1+x/1!+x^2/2!+…+x^n/n!)
定义:对于序列a0,a1,a2,…,函数
G(x)=a。+a1/1!*x+a2/2!*x^2+a3/3!*x^3…+ak/k!*x^k+…
称为序列a0,a1,a2,…对应的指数型母函数。
#include <stdio.h>
int main()
{
int t,i;
__int64 n;
int a[23]={0,2,6,20,72,72,56,60,12,92,56,0,52,12,56,40,92,32,56,80,32,52,56};
int b[20]= {20,72,72,56,60,12,92,56,0,52,12,56,40,92,32,56,80,32,52,56};
while (scanf("%d",&t)!=EOF)
{
if (t==0)
return 0;
for (i=1;i<=t;i++)
{
scanf("%I64d",&n);
if (n<=22)
printf("Case %d: %d\n",i,a[n]);
else
{
n=(n-3)%20 ;
printf("Case %d: %d\n",i,b[n]);
}
}
printf("\n");
}
return 0;
}
浙公网安备 33010602011771号