bzoj3028: 食物(生成函数)

这是一道关于生成函数的数学题目。博客详细介绍了如何利用生成函数来解决承德汉堡、可乐、鸡腿等食物的组合问题。通过列出每种食物的生成函数并进行相乘,最终求解特定项的系数,转化成组合数学问题,得出答案。
摘要由CSDN通过智能技术生成

传送门
生成函数模板题。


我们直接把每种食物的生成函数列出来:
承德汉堡: 1 + x 2 + x 4 + . . . = 1 1 − x 2 1+x^2+x^4+...=\frac 1{1-x^2} 1+x2+x4+...=1x21
可乐: 1 + x = 1 − x 2 1 − x 1+x=\frac{1-x^2}{1-x} 1+x=1x1x2
鸡腿: 1 + x + x 2 = 1 − x 3 1 − x 1+x+x^2=\frac{1-x^3}{1-x} 1+x+x2=1x1x3
蜜桃多: 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} x+x3+x5+...=x(1+x2+x4+...)=1x2x
鸡块: 1 + x 4 + x 8 + x 12 + . . . = 1 1 − x 4 1+x^4+x^8+x^{12}+...=\frac 1{1-x^4} 1+x4+x8+x12+...=1x41
包子: 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+x2+x3=1x1x4
土豆片炒肉: 1 + x = 1 − x 2 1 − x 1+x=\frac{1-x^2}{1-x} 1+x=1x1x2
面 包: 1 + x 3 + x 6 + x 9 + . . . = 1 1 − x 3 1+x^3+x^6+x^9+...=\frac 1{1-x^3} 1+x3+x6+x9+...=1x31
把所有的乘起来: 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 f(x)=(1x)4x=x(1+x+x2+...)4
我们要求 x n x^n xn的系数。
也就是求 g ( x ) = ( 1 + x + x 2 + . . . ) 4 g(x)=(1+x+x^2+...)^4 g(x)=(1+x+x2+...)4 x n − 1 x^{n-1} xn1的系数。
相当于求将 n − 1 n-1 n1拆成四个自然数的方案数,这个组合数学搞定 A n s = C n + 2 3 Ans=C_{n+2}^3 Ans=Cn+23
代码:

#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;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值