[母函数 泰勒展开] BZOJ 3028 食物
2017-02-21 19:20
351 查看
这个神题
汉堡=x0+x2+x4+⋯=11−x2
蜜桃=x1+x3+x5+⋯=x1−x2
面包=x0+x3+x6+⋯=11−x3
鸡块=x0+x4+x8+⋯=11−x4
土豆=x0+x1=1−x21−x
可乐=x0+x1=1−x21−x
鸡腿=x0+x1+x2=1−x31−x
包子=x0+x1+x2+x3=1−x41−x
乘在一起就是f(x)=x(1−x)4
[xn] f(x)就是答案
然后我们在x=0处泰勒展开
答案就是fn(0)n!
这个n阶导数可以找规律得出
fn(x)=n(n+2)!3!(1−x)−(n+3)+(n+3)!3!x(1−x)−(n+4)
化简 fn(0)n! 得就是 n(n+1)(n+2)6=C3n+2
UPD
具体推导可以看这里
其中有一种简洁的方法
x(1−x)4=x(1+x1+x2+x3+⋯)4
[xn](1+x1+x2+x3+⋯)4就是把n分成4部分的方案数
那么答案就是n-1分成4部分的方案数 由插板法得
Ans=C2n−1+3=C3n+2
汉堡=x0+x2+x4+⋯=11−x2
蜜桃=x1+x3+x5+⋯=x1−x2
面包=x0+x3+x6+⋯=11−x3
鸡块=x0+x4+x8+⋯=11−x4
土豆=x0+x1=1−x21−x
可乐=x0+x1=1−x21−x
鸡腿=x0+x1+x2=1−x31−x
包子=x0+x1+x2+x3=1−x41−x
乘在一起就是f(x)=x(1−x)4
[xn] f(x)就是答案
然后我们在x=0处泰勒展开
答案就是fn(0)n!
这个n阶导数可以找规律得出
fn(x)=n(n+2)!3!(1−x)−(n+3)+(n+3)!3!x(1−x)−(n+4)
化简 fn(0)n! 得就是 n(n+1)(n+2)6=C3n+2
UPD
具体推导可以看这里
其中有一种简洁的方法
x(1−x)4=x(1+x1+x2+x3+⋯)4
[xn](1+x1+x2+x3+⋯)4就是把n分成4部分的方案数
那么答案就是n-1分成4部分的方案数 由插板法得
Ans=C2n−1+3=C3n+2
#include<cstdio> using namespace std; const int P=10007; int main(){ char s[501]; int n=0; freopen("t.in","r",stdin); freopen("t.out","w",stdout); scanf("%s",s); for (int i=0;s[i];i++) n=((n<<1)+(n<<3)+s[i]-'0')%P; printf("%d\n",n*(n+1)%P*(n+2)%P*1668%P); return 0; }
相关文章推荐
- BZOJ 3028: 食物 母函数
- bzoj 3028: 食物 -- 母函数
- 【BZOJ3028】食物 母函数
- BZOJ 3028: 食物 母函数
- BZOJ 3028 食物 母函数
- bzoj 3028: 食物(母函数+广义二项式定理)
- 【bzoj3028】食物 母函数+乘法逆元
- bzoj3028 食物(生成函数+Lucas)
- 【BZOJ 3028】 3028: 食物 (生成函数)
- BZOJ3028 - 食物
- 【BZOJ 3028】 食物
- BZOJ 3028 食物
- [BZOJ3028]食物(生成函数)
- bzoj3028 食物(生成函数+逆元)
- bzoj3028食物
- bzoj 3028: 食物【生成函数】
- 【bzoj3028】食物 数论+生成函数
- hdu 5201 The Monkey King 母函数 泰勒展开
- BZOJ 3028 食物 ——生成函数
- 【bzoj5020】[THUWC 2017]在美妙的数学王国中畅游 泰勒展开+LCT