首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

生成函数练习题小结

2013-09-05 
生成函数练习小结传送阵 Matrix67大神的总结:跟着大神学,也不喜欢叫母函数,都称生成函数。在数学中,某个序

生成函数练习小结

传送阵 Matrix67大神的总结:跟着大神学,也不喜欢叫母函数,都称生成函数。

在数学中,某个序列 的生成函数是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。使用生成函数解决问题的方法称为母函数方法。
生成函数可分为很多种,包括普通生成函数、指数生成函数、L级数、贝尔级数和狄利克雷级数。对每个序列都可以写出以上每个类型的一个生成函数。构造生成函数的目的一般是为了解决某个特定的问题,因此选用何种生成函数视乎序列本身的特性和问题的类型。
生成函数的表示一般使用解析形式,即写成关于某个形式变量x的形式幂级数。对幂级数的收敛半径中的某一点,可以求母函数在这一点的级数和。但无论如何,由于母函数是形式幂级数的一种,其级数和不一定对每个x的值都存在。

具体我就不多说了,Matrix67大神blog里说得很好,我就直接上题了。


HDU1085 Holding Bin-Laden Captive!

生成函数的简单题,分别有1,2,5面值的货币q1,q2,q3个,让你求出最小不能由提供的货币组成的数值。由于此题很简单,只考虑了两种情况就行了。

Y=(1+x^2+x^3+x^4…+x^q1*1)*(1+x^2+x^4+x^6…x^q2*2)*(1+x^5+x^10+…x^q3*5)(这是母函数公式)

import java.io.*;  import java.math.*;  import java.util.*;  import java.text.*;  public class Main  {      public static void main(String[] args)      {          Scanner cin=new Scanner(System.in);          BigInteger sum,ans;          int n,i;          while(true)          {              n=cin.nextInt();             if(n==-1)            {                break;            }            sum=BigInteger.ONE;            ans=BigInteger.ONE;            for(i=1;i<=n;++i)            {                sum=sum.multiply(BigInteger.valueOf(i));                ans=ans.multiply(BigInteger.valueOf(2*n-i+1));            }            ans=ans.divide(sum);            ans=ans.divide(BigInteger.valueOf(n+1));            System.out.println(ans);          }      }  } 



热点排行