Skip to content

生成函数 ​

$ g(x)=a_0+a_1x+a_2x^2+...+a_nx^n(-1 \leq x \leq 1) $

P10780 BZOJ3028 食物 ​

题目描述

明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么 NC,他又幻想了他应该带一些什么东西。理所当然的,你当然要帮他计算携带 nn 件物品的方案数。

他这次又准备带一些受欢迎的食物,如:蜜桃多啦,鸡块啦,承德汉堡等等。

当然,他又有一些稀奇古怪的限制:

每种食物的限制如下:

  • 承德汉堡:偶数个;
  • 可乐:00 个或 11 个;
  • 鸡腿:00 个,11 个或 22 个;
  • 蜜桃多:奇数个;
  • 鸡块:44 的倍数个;
  • 包子:00 个,11 个,22 个或 33 个;
  • 土豆片炒肉:不超过一个;
  • 面包:33 的倍数个;

注意,这里我们懒得考虑明明对于带的食物该怎么搭配着吃,也认为每种食物都是以『个』为单位(反正是幻想嘛),只要总数加起来是 nn 就算一种方案。因此,对于给出的 nn,你需要计算出方案数,并对 1000710007 取模。

提示

  • 对于 40%40\% 的数据,但是 1≤n≤1051\leq n\leq 10^5;
  • 对于所有数据,1≤n≤105001\leq n\leq 10^{500};

思路

  • 承德汉堡的生成函数:$ 1+x^2+x^4+...+x^n=\frac{1}{1-x^2} $
  • 可乐为:$ 1+x=\frac{1-x^2}{1-x} $
  • 鸡腿为:$ 1+x+x^2=\frac{1-x^3}{1-x} $
  • 蜜桃为:$ x+x^3+x^5+...+x^n=\frac{x}{1-x^2} $
  • 鸡块为:$ 1+x^4+x^8+...x^n=\frac{1}{1-x^4} $
  • 包子为:$ 1+x+x^2+x^3+x^4=\frac{1-x^4}{1-x} $
  • 土豆片炒肉为:$ 1+x=\frac{1-x^2}{1-x} $
  • 面包为:$ 1+x^3+x^6+...=\frac{1}{1-x^3} $
  • 全部相乘得到 $ f(x)=\frac{x}{(1-x)^4} $
  • 将式子展开,得到的 $ x^n $ 的系数即为方案数
  • $ f(x)=x(\sum {n=0}^{∞}C^{4-1}x^n)= \sum {n=0}^{∞}C^{3}x^{n+1}$
  • 答案即为 $ C_{n+2}^3=\frac{(n+2)(n+1)n}{6} $