题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3028

把式子写出来,化一化,变成 x / ((1-x)^4) ,变成几个 sigma 相乘的样子,用组合意义看一下第 n 项的系数,就是 n-1 的可以不选的划分,即 C( n-1+3,3 ) 。为了高精度方便,化成 (n+2)*(n+1)*n/6 。

别忘了取模。

注意读入高精度数字的方法。错了几次之后只会一位一位地读了……

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,base=1e2,mod=;
int a[N],b[N],c[N];
void rdn()
{
char ch=getchar();
while(ch>''||ch<'')ch=getchar();
while(ch>=''&&ch<='')
b[++b[]]=ch-'',ch=getchar();
for(int i=b[];i>;i-=)
a[++a[]]=(b[i-]<<)+(b[i-]<<)+b[i];
if(b[]&)a[++a[]]=b[];
for(int i=a[]+;i<=b[];i++)b[i]=;
}
void print(int *a)
{
printf("%d",a[a[]]);
for(int i=a[]-;i;i--)
printf("%02d",a[i]);
puts("");
}
void pls(int *b,int x)
{
b[]+=x;
for(int i=;i<=b[];i++)
{
if(b[i]<base)break;
b[i+]+=b[i]/base;b[i]%=base;
}
while(b[b[]+])
{
b[]++;
b[b[]+]+=b[b[]]/base;b[b[]]%=base;
}
}
void mul()
{
c[]=a[]+b[]-;
for(int i=;i<=a[];i++)
for(int j=;j<=b[];j++)
c[i+j-]+=a[i]*b[j];
for(int i=;i<=c[];i++)
c[i+]+=c[i]/base,c[i]%=base;
while(c[c[]+])
{
c[]++;
c[c[]+]+=c[c[]]/base;c[c[]]%=base;
}
for(int i=;i<=c[];i++)
a[i]=c[i],c[i]=;
a[]=c[]; c[]=;
}
void div(int *a,int x)
{
for(int i=a[];i;i--)
{
if(i>) a[i-]+=(a[i]%x)*base;
a[i]/=x;
}
while(a[]>&&!a[a[]])a[]--;
}
void upd(int *a)
{
for(int i=a[];i>;i--)
a[i-]+=a[i]%mod*base;
}
int main()
{
rdn();
for(int i=;i<=a[];i++)b[i]=a[i];
pls(b,);mul();
pls(b,);mul();
div(a,);upd(a);
printf("%d\n",a[]%mod);
return ;
}

bzoj 3028 食物——生成函数的更多相关文章

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

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

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

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

  3. BZOJ 3028 食物 生成函数

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

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

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

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

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

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

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

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

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

  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: 食物

    \(\color{#0066ff}{ 题目描述 }\) 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应 该带一些什么东西.理所当然的,你当然要帮 ...

随机推荐

  1. QT 数字图像处理 笔记一

    1.被有符号整数和无符号整数十足的坑了一上午.我在实现图像旋转的时候先把坐标轴中心平移到图像中心:painter.translate(up_x+temp_w,up_y+temp_h);注意这里面各个数 ...

  2. SQL单行函数和多行函数

    单行函数和多行函数示意图: 单行函数分为五种类型:字符函数.数值函数.日期函数.转换函数.通用函数 单行函数: --大小写控制函数 select lower('Hello World') 转小写, u ...

  3. @MarkFan 口语练习录音 20140401

    Hi,everybody 对于未来,我只梦想最好的情况, 并定下最踏实的计划,而绝不花时间在无谓的担心上, 因为我知道,只要把我对自己的承诺付诸实践, 我的未来将不会只是一个梦…… 这是引用考拉小巫的 ...

  4. JavaWeb Session

    1. Session概述 1.1. 什么是Session Session一般译为会话,是解决Http协议的无状态问题的方案,可以将一次会话中的数据存储在服务器端的内存中,保证在下一次的会话中可以使用. ...

  5. VMware Big Data Extensions 安装步骤

    文档地址:https://pubs.vmware.com/bde-2/index.jsp 第一步,部署BigDataExtensions OVF模板,并登陆Console修改默认密码 第二步,在 Se ...

  6. MongoDB快速入门(二)- 数据库

    创建数据库 MongoDB use DATABASE_NAME 用于创建数据库.该命令如果数据库不存在,将创建一个新的数据库, 否则将返回现有的数据库. 语法 use DATABASE语句的基本语法如 ...

  7. json数据的拼接与解析

    json数据格式 [{ "firstName": "Brett", "lastName":"McLaughlin", & ...

  8. Linux Ctrl+Z VS Ctrl+C 以及+Z的使用方法

    问题及处理: Ctrl+Z是将任务中断,但是此任务并没有结束,他仍然在进程中他只是维持挂起的状态,用户可以使用fg/bg操作继续前台或后台的任务,fg命令重新启动前台被中断的任务,bg命令把被中断的任 ...

  9. php 当前时间计算操作

    首先要设置时间为中国时区 date_default_timezone_set('PRC'); 对于获取当前时间戳后的各种时间计算 数据库保存最好用时间戳 当前时间time() 上一天 echo dat ...

  10. linux平台及windows平台mysql重启方法

    各个平台mysql 重启: inux平台及windows平台mysql重启方法 Linux下重启MySQL的正确方法: 1.通过rpm包安装的MySQL service mysqld restart ...