母函数问题

母函数可分为很多种,包括普通母函数指数母函数L级数贝尔级数狄利克雷级数。对每个序列都可以写出以上每个类型的一个母函数。构造母函数的目的一般是为了解决某个特定的问题,因此选用何种母函数视乎序列本身的特性和问题的类型。

  

我们首先来看下这个多项式乘法:

由此可以看出:

1. x的系数是a1,a2,…an的单个组合的全体。

2. x2的系数是a1,a2,…a2的两个组合的全体。

………

n. xn的系数是a1,a2,….an的n个组合的全体(只有1个)。

由此得到:

母函数的定义:

对于序列a0,a1,a2,…构造一函数:


称函数G(x)是序列a0,a1,a2,…的母函数

hdu 1085

#include<iostream>
#include<cmath>
using namespace std;

int a[10000],b[10000];
int p[3]={1,2,5};

int main()
{
    int i,j,k,sum,t;
 int num[3];
 freopen("d:\\input.txt","r",stdin);
 while(cin>>num[0]>>num[1]>>num[2] && (num[0]!=0 || num[1]!=0 || num[2]!=0))
 {
  sum=num[0]+num[1]*p[1]+num[2]*p[2];
  if(num[0]==0)
   cout<<1<<endl;
  else
  {
      for(i=0;i<=sum+1;i++)
   {
      a[i]=0;
      b[i]=0;
   }
   for(i=0;i<=num[0];i++)
   {
      a[i]=1;
   }
   for(i=1;i<=2;i++)
   {
    for(j=0;j<=sum;j++)
    {
        if(a[j]==0)
      continue;
     for(k=0,t=0;k+j<=sum && t<=num[i];k+=p[i],t++)
     {
         b[k+j]+=a[j];
     }
    }
    for(j=0;j<=sum;j++)
                {
         a[j]=b[j];
      b[j]=0;
    }
   }
   for(i=1;i<=sum+1;i++)
               if(a[i] == 0)
                 break;
   cout<<i<<endl;
  }
 }
 return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值