版权声明:这篇文章的作者是个蒟蒻,没有转载价值,如果要转说一下好了 https://blog.csdn.net/litble/article/details/81609697
首先我们有一些函数推收敛式的套路。比如对于
y=1+x+x2
,我们知道
xy=x+x2+x3
,所以有
xy−x3=y−1
,即
y=1−x31−x
。用类似的方法,我们还可以知道
∑infi=0=11−x
等。
然后我们写一下所有食物的生成函数:
汉堡:
∑infi=0x2i=11−x2
可乐:
1+x
鸡腿:
1+x+x2=1−x31−x
蜜桃多:
∑infi=0xi−∑infi=0x2i=x1−x2
鸡块:
∑infi=0x4i=11−x4
包子:
1+x+x2+x3=1−x41−x
土豆:
1+x
面包:
∑infi=0x3i=11−x3
把它们全部乘起来得:
x(1−x)4
,在这个多项式中,
n
次项的系数就是选
n
个食物的方案数。
将
(1−x)−4
展开。根据广义二项式定理,我们知道
k
次项的系数为
(−1)k(k−4)
,而
(kn)=∏k−1i=0(n−i)k!
所以
(1−x)−4
的
n
次项系数为
(n+1)(n+2)(n+3)6
。又因为原多项式还要乘以一个
x
,所以它的
n
次项系数,也就是答案,就是
n(n+1)(n+2)6
然后边读入边取模什么的一下子就搞出来了。