bzoj3028 食物 生成函数+广义二项式定理

版权声明:这篇文章的作者是个蒟蒻,没有转载价值,如果要转说一下好了 https://blog.csdn.net/litble/article/details/81609697

首先我们有一些函数推收敛式的套路。比如对于 y = 1 + x + x 2 ,我们知道 x y = x + x 2 + x 3 ,所以有 x y x 3 = y 1 ,即 y = 1 x 3 1 x 。用类似的方法,我们还可以知道 i = 0 i n f = 1 1 x 等。

然后我们写一下所有食物的生成函数:
汉堡: i = 0 i n f x 2 i = 1 1 x 2
可乐: 1 + x
鸡腿: 1 + x + x 2 = 1 x 3 1 x
蜜桃多: i = 0 i n f x i i = 0 i n f x 2 i = x 1 x 2
鸡块: i = 0 i n f x 4 i = 1 1 x 4
包子: 1 + x + x 2 + x 3 = 1 x 4 1 x
土豆: 1 + x
面包: i = 0 i n f x 3 i = 1 1 x 3

把它们全部乘起来得: x ( 1 x ) 4 ,在这个多项式中, n 次项的系数就是选 n 个食物的方案数。
( 1 x ) 4 展开。根据广义二项式定理,我们知道 k 次项的系数为 ( 1 ) k ( 4 k ) ,而

( n k ) = i = 0 k 1 ( n i ) k !

所以 ( 1 x ) 4 n 次项系数为 ( n + 1 ) ( n + 2 ) ( n + 3 ) 6 。又因为原多项式还要乘以一个 x ,所以它的 n 次项系数,也就是答案,就是 n ( n + 1 ) ( n + 2 ) 6
然后边读入边取模什么的一下子就搞出来了。

猜你喜欢

转载自blog.csdn.net/litble/article/details/81609697