zoukankan      html  css  js  c++  java
  • 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;
    }


  • 相关阅读:
    个人作业——软件评测
    软件工程实践2019第五次作业
    18年今日头条笔试第一题题解:球迷(fans)
    游戏2.1版本
    游戏2.0版本 代码
    游戏2.0版本
    改进版游戏代码
    改进版游戏
    2017.1.13之审判日
    找朋友 的内存超限代码
  • 原文地址:https://www.cnblogs.com/yyf573462811/p/6365168.html
Copyright © 2011-2022 走看看