BZOJ 3028: 食物
\(\color{#0066ff}{ 题目描述 }\)
明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应
该带一些什么东西。理所当然的,你当然要帮他计算携带N件物品的方案数。他这次又准备带一些受欢迎的食物,
如:蜜桃多啦,鸡块啦,承德汉堡等等当然,他又有一些稀奇古怪的限制:每种食物的限制如下:
承德汉堡:偶数个
可乐:0个或1个
鸡腿:0个,1个或2个
蜜桃多:奇数个
鸡块:4的倍数个
包子:0个,1个,2个或3个
土豆片炒肉:不超过一个。
面包:3的倍数个
注意,这里我们懒得考虑明明对于带的食物该怎么搭配着吃,也认为每种食物都是以‘个’为单位(反正是幻想嘛
),只要总数加起来是N就算一种方案。因此,对于给出的N,你需要计算出方案数,并对10007取模。
\(\color{#0066ff}{输入格式}\)
输入一个数字N,1<=n<=\(10^{500}\)
\(\color{#0066ff}{输出格式}\)
如题
\(\color{#0066ff}{输入样例}\)
1
5
\(\color{#0066ff}{输出样例}\)
1
35
\(\color{#0066ff}{数据范围与提示}\)
none
\(\color{#0066ff}{ 题解 }\)
生成函数
\(ans = (x^0+x^2+x^4+x^6...)*(x^0+x^1)*(x^0+x^1+x^2)*(x^1+x^3+x^5...)*(x^0+x^4+x^8...)*(x^0+x^1+x^2+x^3)*(x^0+x^1)*(x^0+x^3+x^6...)\)的第n项系数
因为有\(x^0+x^1+x^2+x^3+...=\frac{1}{1-x}\)
所以原式为\(ans = (\frac{1}{1-x^2})*(1+x)*(1+x+x^2)*(\frac{x}{1-x^2})*(\frac{1}{1-x^4})*(1+x+x^2+x^3)*(1+x)*(\frac{1}{1-x^3})\)
还有一些项可以等比数列求和
\(ans = \frac{1}{1-x^2}*\frac{1-x^2}{1-x}*\frac{1-x^3}{1-x}*\frac{x}{1-x^2}*\frac{1}{1-x^4}*\frac{1-x^4}{1-x}*\frac{1-x^2}{1-x}*\frac{1}{1-x^3}\)
大力约分
\(ans = \frac{x}{(1-x^4)}\)的n次方项系数
这个怎么搞呢?
因为\(\begin{aligned}\frac{1}{(1-x)^{n + 1}}=\sum_{i\ge 0}C_{n+i}^i x^i\end{aligned}\)
因此可以化为\(ans=x*\begin{aligned}\sum_{i\ge 0}C_{3+i}^i x^i\end{aligned}\)
把x弄进去\(ans=\begin{aligned}\sum_{i\ge 0}C_{3+i}^i x^{i +1}\end{aligned}\)
改变一下i的枚举\(ans=\begin{aligned}\sum_{i\ge 1}C_{2+i}^{i - 1} x^{i}\end{aligned}\)
则$ans=\begin{aligned}\sum_{i\ge 1}C_{2+i}^{i - 1} x{i}\end{aligned}的第n项系数=C_{2+n}{n - 1} =C_{2+n}^{3} $
然后就没有然后了,暴力组合数展开。。。qwq
#include<bits/stdc++.h>
#define LL long long
const int mod = 10007;
LL in() {
char ch; LL x = 0, f = 1;
while(!isdigit(ch = getchar()))(ch == '-') && (f = -f);
for(x = ch ^ 48; isdigit(ch = getchar()); x = ((x << 1) + (x << 3) + (ch ^ 48)) % mod);
return x * f;
}
int main() {
LL n = in();
printf("%lld\n", (n * (n + 1) * (n + 2) / 6) % mod);
return 0;
}
BZOJ 3028: 食物的更多相关文章
- bzoj 3028: 食物 -- 母函数
3028: 食物 Time Limit: 3 Sec Memory Limit: 128 MB Description 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险! 我们暂且不讨论他 ...
- BZOJ 3028: 食物 [生成函数 隔板法 | 广义二项式定理]
3028: 食物 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 497 Solved: 331[Submit][Status][Discuss] De ...
- BZOJ 3028 食物 (生成函数+数学题)
题面:BZOJ传送门 题目让我们求这些物品在合法范围内任意组合,一共组合出$n$个物品的方案数 考虑把每种食物都用生成函数表示出来,然后用多项式乘法把它们乘起来,第$n$项的系数就是方案数 汉堡:$1 ...
- BZOJ 3028 食物 生成函数
Description 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应 该带一些什么东西.理所当然的,你当然要帮他计算携带N件物品的方案数.他这 ...
- bzoj 3028 食物——生成函数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3028 把式子写出来,化一化,变成 x / ((1-x)^4) ,变成几个 sigma 相乘的 ...
- bzoj 3028 食物 —— 生成函数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3028 式子很好推,详细可以看这篇博客:https://blog.csdn.net/wu_to ...
- BZOJ 3028 食物 ——生成函数
把所有东西的生成函数搞出来. 发现结果是x*(1-x)^(-4) 然后把(1-x)^(-4)求逆,得到(1+x+x^2+...)^4 然后考虑次数为n的项前的系数,就相当于选任意四个非负整数构成n的方 ...
- bzoj 3028: 食物【生成函数】
承德汉堡:\( 1+x^2+x^4+...=\frac{1}{1-x^2} \) 可乐:\(1+x \) 鸡腿:\( 1+x+x^2=\frac{x^3-1}{x-1} \) 蜜桃多:\( x+x^3 ...
- bzoj 3028: 食物 生成函数_麦克劳林展开
不管怎么求似乎都不太好求,我们试试生成函数.这个东西好神奇.生成函数的精华是两个生成函数相乘,对应 $x^{i}$ 前的系数表示取 $i$ 个时的方案数. 有时候,我们会将函数按等比数列求和公式进行压 ...
随机推荐
- 此上下文中不允许异步操作。启动异步操作的页必须将 Async 特性设置为 true,并且异步操作只能在 PreRenderComplete 事件之前的页上启动。
<%@ Page Language="C#" AutoEventWireup="true" ...... Async="true" % ...
- Python多进程-进程池
进程池可以减轻多进程对CPU的负担 把一个进程序列放入进程池,使用的时候,就会在进程池中取进程如果进程池中没有进程了,脚本就会等待,直到进程池中有可用进程 进程池生成的子线程,不能直接运行,要放入进程 ...
- 阿里云服务器访问github慢临时解决方法
su root vi /etc/hosts # github 204.232.175.78 http://documentcloud.github.com 207.97.227.239 http:// ...
- executeUpdate,executeQuery,executeBatch 的区别
executeQuery : 用于实现单个结果集,例如: Select 一般使用executeQuery 就是来实现单个结果集的工具 executeUpdate 用于执行 INSERT.UPDATE ...
- BST树、B-树、B+树、B*树
BST树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如: ...
- python爬虫框架(1)--框架概述
框架概述 其中比较好用的是 Scrapy 和PySpider.pyspider上手更简单,操作更加简便,因为它增加了 WEB 界面,写爬虫迅速,集成了phantomjs,可以用来抓取js渲染的页面.S ...
- hibernate学习笔记(5)在数据库中存取图片
如何从数据库读取存入的图片,即Blob(二进制)数据. 先从数据库读取对象. 再从获取的对象中得到blob对象. 通过blob对象的getBinaryStream()方法获取input输出流. 之后通 ...
- 嵌入式Linux启动优化手记2 U…
参考一下 原文地址:U-boot优化">嵌入式Linux启动优化手记2 U-boot优化作者:ZhaoJunling 既然不能使用新的U-boot,那就优化一点是一点,慢慢干吧. 1. ...
- ORACLE体系结构一 (实例(instance))--ORACLE_SID
数据库实例(也称为服务器Server)就是用来访问一个数据库文件集的一个存储结构及后台进程的集合.它使一个单独的数据库可以被多个实例访问(也就是ORACLE并行服务器-- OPS).实例在操作系统中用 ...
- NLTK与NLP原理及基础
参考https://blog.csdn.net/zxm1306192988/article/details/78896319 以NLTK为基础配合讲解自然语言处理的原理 http://www.nlt ...