2018.12.30 bzoj3028: 食物(生成函数)

版权声明:随意转载哦......但还是请注明出处吧: https://blog.csdn.net/dreaming__ldx/article/details/85398010

传送门
生成函数模板题。


我们直接把每种食物的生成函数列出来:
承德汉堡: 1 + x 2 + x 4 + . . . = 1 1 x 2 1+x^2+x^4+...=\frac 1{1-x^2}
可乐: 1 + x = 1 x 2 1 x 1+x=\frac{1-x^2}{1-x}
鸡腿: 1 + x + x 2 = 1 x 3 1 x 1+x+x^2=\frac{1-x^3}{1-x}
蜜桃多: x + x 3 + x 5 + . . . = x ( 1 + x 2 + x 4 + . . . ) = x 1 x 2 x+x^3+x^5+...=x(1+x^2+x^4+...)=\frac x{1-x^2}
鸡块: 1 + x 4 + x 8 + x 12 + . . . = 1 1 x 4 1+x^4+x^8+x^{12}+...=\frac 1{1-x^4}
包子: 1 + x + x 2 + x 3 = 1 x 4 1 x 1+x+x^2+x^3=\frac{1-x^4}{1-x}
土豆片炒肉: 1 + x = 1 x 2 1 x 1+x=\frac{1-x^2}{1-x}
面 包: 1 + x 3 + x 6 + x 9 + . . . = 1 1 x 3 1+x^3+x^6+x^9+...=\frac 1{1-x^3}
把所有的乘起来: f ( x ) = x ( 1 x ) 4 = x ( 1 + x + x 2 + . . . ) 4 f(x)=\frac x{(1-x)^4}=x(1+x+x^2+...)^4
我们要求 x n x^n 的系数。
也就是求 g ( x ) = ( 1 + x + x 2 + . . . ) 4 g(x)=(1+x+x^2+...)^4 x n 1 x^{n-1} 的系数。
相当于求将 n 1 n-1 拆成四个自然数的方案数,这个组合数学搞定 A n s = C n + 2 3 Ans=C_{n+2}^3
代码:

#include<bits/stdc++.h>
using namespace std;
const int mod=10007;
int n=0;
int main(){
	char ch=getchar();
	while(!isdigit(ch))ch=getchar();
	while(isdigit(ch))n=((n<<3)+(n<<1)+(ch^48))%mod,ch=getchar();
	cout<<n*(n+1)%mod*(n+2)%mod*1668%mod;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/dreaming__ldx/article/details/85398010