• 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,…对应的指数型母函数。

      G(X)  =  ( 1+ x + x^2/2! + x^4/! + .. )^2      *  ( 1 + x + x^2/2! + x^3/3! +... )^2
      A, C 只能出现偶数或者不出现情况    B, D出现方式不限制    
     得:  x^n 项系数  a(n) =  (4^n+2*2^n)/(4*n!)
     求的:count=(4^n+2*2^n)/4 0

    #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;
    }


  • 相关阅读:
    标准库:Number 对象
    标准库:Boolean 对象
    标准库:包装对象
    标准库:Array 对象
    git的基本操作
    子查询、联结、约束、索引
    sql基础、检索、过滤数据
    聚合函数和分组数据-GROUP BY、HAVING
    长期更新~java学习过程中遇到的英语单词
    3.(155)最小栈
  • 原文地址:https://www.cnblogs.com/yyf573462811/p/6365168.html
Copyright © 2020-2023  润新知