\(\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: 食物的更多相关文章

  1. bzoj 3028: 食物 -- 母函数

    3028: 食物 Time Limit: 3 Sec  Memory Limit: 128 MB Description 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险! 我们暂且不讨论他 ...

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

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

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

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

  4. BZOJ 3028 食物 生成函数

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

  5. bzoj 3028 食物——生成函数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3028 把式子写出来,化一化,变成 x / ((1-x)^4) ,变成几个 sigma 相乘的 ...

  6. bzoj 3028 食物 —— 生成函数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3028 式子很好推,详细可以看这篇博客:https://blog.csdn.net/wu_to ...

  7. BZOJ 3028 食物 ——生成函数

    把所有东西的生成函数搞出来. 发现结果是x*(1-x)^(-4) 然后把(1-x)^(-4)求逆,得到(1+x+x^2+...)^4 然后考虑次数为n的项前的系数,就相当于选任意四个非负整数构成n的方 ...

  8. 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 ...

  9. bzoj 3028: 食物 生成函数_麦克劳林展开

    不管怎么求似乎都不太好求,我们试试生成函数.这个东西好神奇.生成函数的精华是两个生成函数相乘,对应 $x^{i}$ 前的系数表示取 $i$ 个时的方案数. 有时候,我们会将函数按等比数列求和公式进行压 ...

随机推荐

  1. 此上下文中不允许异步操作。启动异步操作的页必须将 Async 特性设置为 true,并且异步操作只能在 PreRenderComplete 事件之前的页上启动。

    <%@ Page Language="C#" AutoEventWireup="true" ...... Async="true" % ...

  2. Python多进程-进程池

    进程池可以减轻多进程对CPU的负担 把一个进程序列放入进程池,使用的时候,就会在进程池中取进程如果进程池中没有进程了,脚本就会等待,直到进程池中有可用进程 进程池生成的子线程,不能直接运行,要放入进程 ...

  3. 阿里云服务器访问github慢临时解决方法

    su root vi /etc/hosts # github 204.232.175.78 http://documentcloud.github.com 207.97.227.239 http:// ...

  4. executeUpdate,executeQuery,executeBatch 的区别

    executeQuery : 用于实现单个结果集,例如: Select 一般使用executeQuery 就是来实现单个结果集的工具 executeUpdate 用于执行 INSERT.UPDATE ...

  5. BST树、B-树、B+树、B*树

    BST树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如: ...

  6. python爬虫框架(1)--框架概述

    框架概述 其中比较好用的是 Scrapy 和PySpider.pyspider上手更简单,操作更加简便,因为它增加了 WEB 界面,写爬虫迅速,集成了phantomjs,可以用来抓取js渲染的页面.S ...

  7. hibernate学习笔记(5)在数据库中存取图片

    如何从数据库读取存入的图片,即Blob(二进制)数据. 先从数据库读取对象. 再从获取的对象中得到blob对象. 通过blob对象的getBinaryStream()方法获取input输出流. 之后通 ...

  8. 嵌入式Linux启动优化手记2&nbsp;U…

    参考一下 原文地址:U-boot优化">嵌入式Linux启动优化手记2 U-boot优化作者:ZhaoJunling 既然不能使用新的U-boot,那就优化一点是一点,慢慢干吧. 1. ...

  9. ORACLE体系结构一 (实例(instance))--ORACLE_SID

    数据库实例(也称为服务器Server)就是用来访问一个数据库文件集的一个存储结构及后台进程的集合.它使一个单独的数据库可以被多个实例访问(也就是ORACLE并行服务器-- OPS).实例在操作系统中用 ...

  10. NLTK与NLP原理及基础

    参考https://blog.csdn.net/zxm1306192988/article/details/78896319 以NLTK为基础配合讲解自然语言处理的原理  http://www.nlt ...