生成函数
概念
P10780 BZOJ3028 食物
题目描述
明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么 NC,他又幻想了他应该带一些什么东西。理所当然的,你当然要帮他计算携带 件物品的方案数。
他这次又准备带一些受欢迎的食物,如:蜜桃多啦,鸡块啦,承德汉堡等等。
当然,他又有一些稀奇古怪的限制:
每种食物的限制如下:
- 承德汉堡:偶数个;
- 可乐: 个或 个;
- 鸡腿: 个, 个或 个;
- 蜜桃多:奇数个;
- 鸡块: 的倍数个;
- 包子: 个, 个, 个或 个;
- 土豆片炒肉:不超过一个;
- 面包: 的倍数个;
注意,这里我们懒得考虑明明对于带的食物该怎么搭配着吃,也认为每种食物都是以『个』为单位(反正是幻想嘛),只要总数加起来是 就算一种方案。因此,对于给出的 ,你需要计算出方案数,并对 取模。
提示
- 对于 的数据,但是 ;
- 对于所有数据,;
思路
- 承德汉堡的生成函数:
- 可乐为:
- 鸡腿为:
- 蜜桃为:
- 鸡块为:
- 包子为:
- 土豆片炒肉为:
- 面包为:
- 全部相乘得到
- 将式子展开,得到的 的系数即为方案数
- 答案即为