首页 > 编程知识 正文

指数函数及其图像与性质,求指数函数的矩母函数

时间:2023-05-04 03:27:26 阅读:167740 作者:3887

生成函数(母函数)通常有生成函数和指数生成函数。 1 .通常生成函数用于解决多重集合的组合问题

2 .指数型母函数用于解决多重集的序列问题

普通型母函数

百度文库连接

问题: HDU1521有n种物品,每种物品有ki件,从中选择m件排列数

分析:有n个元素,其中a1、a2、a3、 an互不相同,进行全序列可得到n! 不同的排列

令人在意的爆米花的一个元素ai是ni的多次重复,全部排列起来必然有重复元素,其中真正不同的总排列数,即其重复度为ni!

同样,a1为n1次,a2为n2次,……AK为nk次,n1n2n3……NK=n;

如果对这样n个元素进行全部排列,则得到不同排列的个数

如果只排列其中的m个元素,就会成为指数型母函数

构造函数

据说g(x )是数列a0、a1、a2、a3.an的指数型生成函数

以前讨论的母函数和指数母函数的区别在于,前者直接使用an作为幂级数的系数,后者用作幂级数的系数,真正有意义的是an。

总的来说,指数型母函数可以说是普通母函数的派生。 应该注意的是两者的区别,一个是系数,另一个是指数的变化。

那么,如果有一定的母函数基础和指数型母函数的知识,就可以求出这个问题。 请注意使用双精度数组、考虑浮点数的精度误差等问题。

C

# include iostream # include cstdio # includecstringusingnamespacestd; const int maxn=15; double a[maxn],b[maxn]; int fact[maxn]; int num[maxn]; void init () { fact[0]=1; for(intI=1; imaxn; I ) fact[i]=i*fact[i-1]; memset(a,0,sizeof a ); memset(b,0,sizeof b ); (}int main ) ) { int n,m; wile(Scanf('%d%d ),n,m )!=EOF () { init; for(intI=1; i=n; I ) Scanf('%d ',num[i]; for(intI=0; i=num[1]; I//第一初始赋值a[i]=1.0/fact[i]; for(intI=2; i=n; I () /循环第2项至第n项for ) intj=0; j=m; j ) for(intk=0; k=num[i]k j=m; k ) b[k j]=a[j]/fact[k]; for(intj=0; j=m; { a[j]=b[j]; b[j]=0; }printf('%.0f(n ),a[m]*fact[m] ); }} Java

import java.util.*; 输入Java.math.*; public class main { staticintmaxn=15; static double [ ] a=new double [ maxn ]; static double [ ] b=new double [ maxn ]; static int[] num=new int[maxn]; static int[] fact=new int[maxn]; static void init () for ) intI=0; imaxn; I () {a[i]=0.0; b[i]=0.0; num[i]=0; }fact[0]=1; for(intI=1; imaxn; I ) fact(I )=fact (I-1 ) *I; } publicstaticvoidmain (string [ ] args ) scannerCIN=newscanner ) system.in ); wile(CIN.Hasnext () ) {init; int n=cin.nextInt (; int m=cin.nextInt (; /*for(intI=0; imaxn; I ) system.out.println(fact[I]; */for(intI=1; i=n; I ) num(I )=CIN.nextint ); for(intI=0; i=num[1]; I ) a(I )=) 1.0/fact ); for(intI=2; i=n; I ) for(intj=0; j=m; j ) for(intk=0; k=num[i]j k=m; k ) b[jk]=(a[j]/fact[k] ); for(intj=0; j=m; {a[j]=b[j]; b[j]=0.0; }intans=(int ) ) a[m]*fact[m] 0.5 ); system.out.println(ans; (}cin.close ); }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。