title: 普通母函数的理解
tags: [acm,母函数]
-
问题?
有1克的砝码3枚、2克的砝码2枚、3克的砝码4枚 ,能称出哪几种重量?每种重量各有几种可能方案?
解决这个问题之前先看一个简单的问题,,,,,
有四个位置,每个位置只能放一个0或者换一个1,问一共能组成多少种不同的排列?
这个问题很简单每个位置有2中选择,并且有四个位置那么就是2*2*2*2=24;但是其中的2是怎么来的呢?每个位置要么选择0或者选择1,0是一种选择,1是另一种选择,那么就是(1+1)*(1+1)*(1+1)*(1+1)=24,
上面的问题和这个是不是有点相似呢,
1克的砝码有三枚,可以选择1个,2个或者3个或者0个,对应的质量可选的有 1、2、3、0
2克的砝码有两枚,可以选择1个,2个或者0个,对应的质量可选的有 2、4、0
3克的砝码有三枚,可以选择1个,2个或者3个或者0个,对应的质量可选的有 3、6、9、0
设x代表砝码 (这里的x并没有实际意义) x^i 代表目前所选了质量为i的砝码的组合
对于1克的砝码可选的质量 有个表达:(x^0 + x^1 + x^2 + x^3 )
对于2克的砝码可选的质量 有个表达:(x^0 + x^2 + x^4 )
对于3克的砝码可选的质量 有个表达:(x^0 + x^3 + x^6 + x^9 )
然后把每种质量的砝码的选择方案相乘: (x^0 + x^1 + x^2 + x^3 )*(x^0 + x^2 + x^4 )*(x^0 + x^3 + x^6 + x^9 )=(a1xb1+a2xb2+...+anx^bn) 最终的表达式的实际含义:a1X^b1 选择b1质量的方案有a1种,选择b2质量的方案有a2种,选择b3质量的方案有a3种。这个最终的表达式是我们需要的,我们可以从这个表达式中找出我们选择某种质量的方案数。
那么重点来了,如何用代码展开这种表达式并保存下来。。。。不难发现这个表达式中对我们有用信息只有系数和次方数
具体怎么用代码展开这个多项式请看找单词