题目描述

明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应
该带一些什么东西。理所当然的,你当然要帮他计算携带N件物品的方案数。他这次又准备带一些受欢迎的食物,
如:蜜桃多啦,鸡块啦,承德汉堡等等当然,他又有一些稀奇古怪的限制:每种食物的限制如下:
承德汉堡:偶数个
可乐:0个或1个
鸡腿:0个,1个或2个
蜜桃多:奇数个
鸡块:4的倍数个
包子:0个,1个,2个或3个
土豆片炒肉:不超过一个。
面包:3的倍数个
注意,这里我们懒得考虑明明对于带的食物该怎么搭配着吃,也认为每种食物都是以‘个’为单位(反正是幻想嘛
),只要总数加起来是N就算一种方案。因此,对于给出的N,你需要计算出方案数,并对10007取模。

输入

输入一个数字N,1<=n<=10^500

输出

如题

样例输入

输入样例1
1
输入样例2
5

样例输出

输出样例1
1
输出样例2
35
 
对于每种食物的限制,我们可以用多项式形式来表示,$a_{i}x^i$表示这种食物取$i$个时的方案数是$a_{i}$。
那么对于每种食物,我们可以列出对应多项式,答案就是将所有多项式相乘后$x^n$的系数。
承德汉堡:$\sum\limits_{i=0}^{+\infty}x^{2i}=\frac{1}{1-x^2}$
可乐:$1+x$
鸡腿:$1+x+x^2=\frac{x^3-1}{x-1}$
蜜桃多:$\sum\limits_{i=0}^{+\infty}x^{2i+1}=\frac{x}{1-x^2}$
鸡块:$\sum\limits_{i=0}^{+\infty}x^{4i}=\frac{1}{1-x^4}$
包子:$1+x+x^2+x^3=\frac{x^4-1}{x-1}$
土豆片炒肉:$1+x$
面包:$\sum\limits_{i=0}^{+\infty}x^{3i}=\frac{1}{1-x^3}$
由等比数列求和公式即可推得等式右边的部分,那么将所有生成函数都乘起来就能得到:$\frac{x}{(1-x)^4}$
根据泰勒展开可以知道$\frac{1}{(1-x)^m}=(1+x+x^2+x^3+……)^m$,求第$n$项系数就是$C_{m+n-1}^{m-1}$
乘上$x$就相当于把系数都右移一位,即求第$n-1$项系数为$C_{m+n-2}^{m-1}$,将$m=4$代入,那么答案就是$C_{n+2}^{3}$。

#include<set>
#include<map>
#include<queue>
#include<stack>
#include<cmath>
#include<cstdio>
#include<vector>
#include<bitset>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define mod 10007
using namespace std;
int ans;
int n;
char s[1000];
ll quick(int x,int y)
{
ll res=1ll;
while(y)
{
if(y&1)
{
res=res*x%mod;
}
y>>=1;
x=1ll*x*x%mod;
}
return res;
}
int main()
{
scanf("%s",s+1);
int len=strlen(s+1);
for(int i=1;i<=len;i++)
{
n=n*10+s[i]-'0';
n%=mod;
}
ans=n*(n+1)%mod;
ans=ans*(n+2)%mod;
ans=ans*quick(6,mod-2)%mod;
ans=(ans%mod+mod)%mod;
printf("%d",ans);
}

BZOJ3028食物——生成函数+泰勒展开的更多相关文章

  1. BZOJ3028: 食物(生成函数)

    题意 链接 Sol 生成函数入门题. 对每个物品分别列一下,化到最后是\(\frac{x}{(1-x)^4}\) 根据广义二项式定理,最后答案是\(C_{(N - 1) + 4 - 1}^{4-1} ...

  2. BZOJ3028 食物 (生成函数)

    首先 1+x+x^2+x^3+...+x^∞=1/(1-x) 对于题目中的几种食物写出生成函数 (对于a*x^b , a表示方案数 x表示食物,b表示该种食物的个数) f(1)=1+x^2+x^4+. ...

  3. BZOJ3028 食物(生成函数)

    显然构造出生成函数:则有f(x)=(1+x2+x4+……)·(1+x)·(1+x+x2)·(x+x3+x5+……)·(1+x4+x8+……)·(1+x+x2+x3)·(1+x)·(1+x3+x6+…… ...

  4. 2018.12.30 bzoj3028: 食物(生成函数)

    传送门 生成函数模板题. 我们直接把每种食物的生成函数列出来: 承德汉堡:1+x2+x4+...=11−x21+x^2+x^4+...=\frac 1{1-x^2}1+x2+x4+...=1−x21​ ...

  5. 【bzoj3028】 食物 生成函数+隔板法

    题目传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=3028 这题的推导很妙啊,裸的推母函数的题. 我们首先构造出每种食物的母函数: 汉堡:$ ...

  6. BZOJ 3028 食物 (生成函数+数学题)

    题面:BZOJ传送门 题目让我们求这些物品在合法范围内任意组合,一共组合出$n$个物品的方案数 考虑把每种食物都用生成函数表示出来,然后用多项式乘法把它们乘起来,第$n$项的系数就是方案数 汉堡:$1 ...

  7. bzoj3028食物

    http://www.lydsy.com/JudgeOnline/problem.php?id=3028 好吧,这是我第一道生成函数的题目. 先搞出各种食物的生成函数: 汉堡:$1+x^2+x^4+. ...

  8. BZOJ 3028: 食物 [生成函数 隔板法 | 广义二项式定理]

    3028: 食物 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 497  Solved: 331[Submit][Status][Discuss] De ...

  9. BZOJ3028 食物 和 LOJ6261 一个人的高三楼

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

随机推荐

  1. audio currentTime 时间戳转换(es6语法)

    function format(interval){ if (!value) return '' let interval = Math.floor(value) let minute = (Math ...

  2. 跨域iframe如何实现高度自适应?

    经常有项目会要求实现iframe高度自适应,如果是同域的还好说,如果是跨域的,父页面没有办法操作子页面,想要正确获取子页面高度的话,可以采用以下办法: 方法一:使用HTML5 postMessage ...

  3. 控制台程序读取Excel设置角色权限

    摘要: 本人微信公众号:微软动态CRM专家罗勇 ,回复283或者20181118可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me ...

  4. SpreadJS使用进阶指南 - 使用 NPM 管理你的项目

    前言 SpreadJS作为一款性能出众的纯前端电子表格控件,自2015年发布以来,已经被广泛应用于各领域“在线Excel”数据管理项目中.NPM,作为管理Node.js库最有力的手段,解决了很多Nod ...

  5. SVN上传的时候没法显示文件名,只显示后缀名

    之前在用SVN上传android代码的时候,发现上传列表上的文件没法显示名字,只显示了后缀名,就像这样: 各种疑惑,最终发现解决方法: 右键单击操作栏的status: 然后在出现的选项里面将filen ...

  6. Android studio设置文件头,定制代码注释

    一.说明 在下载或者看别人的代码我们常会看见,每一个文件的上方有个所属者的备注.如果要是一个一个备注那就累死了. 二.设置方法 File >>> Setting >>&g ...

  7. Spring Ioc工作机制 初步

    Spring IoC工作原理 Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean之间的依赖 ...

  8. Centos7上安装docker (转)

    Centos7上安装docker Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE. 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如 ...

  9. SQLServer之创建INSTEAD OF INSERT,UPDATE,DELETE触发器

    INSTEAD OF触发器工作原理 INSTEAD OF表示并不执行其所定义的操作INSERT,UPDATE ,DELETE,而仅是执行触发器本身,即当对表进行INSERT.UPDATE 或 DELE ...

  10. topjui中datagrid增删改查

    1.掌握datagrid的创建方式在html中直接定义与在js中定义 可参考easyui的官方文档:http://www.jeasyui.net/plugins/183.html 2.实现代码如下:重 ...