bzoj 3028 食物 —— 生成函数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3028
式子很好推,详细可以看这篇博客:https://blog.csdn.net/wu_tongtong/article/details/78856565
所以就是要求 C(n+2,3) ,n 很大但是模数很小,可以用 Lucas 定理;
总觉得真的写了高精度和 Lucas 定理有点麻烦...而且还因为一处忘记取模 RE 了一次...
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
int const xn=,mod=;
int jc[mod+],jcn[mod+];
char ch[xn];
struct N{int a[xn];}n;
ll pw(ll a,int b)
{
ll ret=;
for(;b;b>>=,a=(a*a)%mod)
if(b&)ret=(ret*a)%mod;
return ret;
}
int md(N x)
{
for(int i=x.a[];i>;i--)
x.a[i-]+=(x.a[i]%mod)*,x.a[i]=;
return x.a[]%mod;//%mod
}
int C(int n,int m){return ((ll)jc[n]*jcn[m])%mod*jcn[n-m]%mod;}
int Lucas(N n,int m)
{
if(n.a[]<=&&n.a[]<)return ;
int p=md(n);
return C(p,m%mod)%mod;
}
int main()
{
scanf("%s",ch+); int l=n.a[]=strlen(ch+);
for(int i=;i<=l;i++)n.a[i]=ch[l-i+]-'';
n.a[]+=;
for(int i=;i<=l;i++)n.a[i+]+=n.a[i]/,n.a[i]%=;
if(n.a[l+])n.a[]++; jc[]=;
for(int i=;i<mod;i++)jc[i]=(ll)jc[i-]*i%mod;
jcn[mod-]=pw(jc[mod-],mod-);
for(int i=mod-;i>=;i--)jcn[i]=(ll)jcn[i+]*(i+)%mod; printf("%d\n",Lucas(n,));
return ;
}
bzoj 3028 食物 —— 生成函数的更多相关文章
- 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 食物 ——生成函数
把所有东西的生成函数搞出来. 发现结果是x*(1-x)^(-4) 然后把(1-x)^(-4)求逆,得到(1+x+x^2+...)^4 然后考虑次数为n的项前的系数,就相当于选任意四个非负整数构成n的方 ...
- bzoj 3028: 食物 生成函数_麦克劳林展开
不管怎么求似乎都不太好求,我们试试生成函数.这个东西好神奇.生成函数的精华是两个生成函数相乘,对应 $x^{i}$ 前的系数表示取 $i$ 个时的方案数. 有时候,我们会将函数按等比数列求和公式进行压 ...
- bzoj 3028: 食物 -- 母函数
3028: 食物 Time Limit: 3 Sec Memory Limit: 128 MB Description 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险! 我们暂且不讨论他 ...
- 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: 食物
\(\color{#0066ff}{ 题目描述 }\) 明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应 该带一些什么东西.理所当然的,你当然要帮 ...
随机推荐
- linux mysql-server can't find mysql_config
linux mysql-server can't find mysql_config Ask Question up vote7down votefavorite 3 I have a running ...
- Java常见面试题汇总(一)
1)什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java虚拟机是一个能够运行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机运行的字节 ...
- JS中Float类型加减乘除 修复 JQ 操作 radio、checkbox 、select LINQ to SQL:Where、Select/Distinct LINQ to SQL Count/Sum/Min/Max/Avg Join
JS中Float类型加减乘除 修复 MXS&Vincene ─╄OvЁ &0000027─╄OvЁ MXS&Vincene MXS&Vincene ─╄Ov ...
- nodejs while-loop
node-while-loop A while loop alternative for Nodejs based on promises. Install $ npm install --save ...
- STL之set具体解释(二)
首先来看看set集合容器: set集合容器实现了红黑树的平衡二叉树数据结构.在插入元素时它会自己主动调整二叉树的排列,把该元素放到适当的位置,而且 保证左右子树平衡.平衡二叉检索树採用中序遍历算法. ...
- Android性能优化之中的一个 布局优化
本文为Android性能优化--布局优化,主要介绍使用抽象布局标签(include, viewstub, merge).去除不必要的嵌套和View节点.降低不必要的infalte及其它Layout方面 ...
- MFC学习之对话框---对话框之间的domodle 数据传递
if(IDOK==data.DoModal()){tx->m_gao=data.m_he;tx->m_kuan=data.m_wi;tx->m_jiao=data.m_jiaoju; ...
- 透视WPF 应用程序的利器
当我们看到一些设计新颖的网站时,可以借助浏览器自带的Inspector 工具或插件方便的浏览网站布局结构及逻辑.如果是WPF 应用程序能否看到控件的架构方式呢?本篇将介绍两款工具Snoop 和WPF ...
- 虚拟机和主机ping不通,SQL Server无法远程连接的解决方法
一.虚拟机网络的配置 这里只列一下自己的配置: 1.编辑---虚拟网络编辑器 进行设置 2.设置对应系统 3.还是Ping不通,最后关闭 虚机内的Windows防火墙,可以Ping通,看来Net模式下 ...
- (转) 实现wince datagrid 上下滑屏数据浏览
开发 基于wince 手持设备数据库应用时 由于是触摸屏 当datagrid 数据过多 往往用户烦于去控制又窄又细的上下滚动条 尤其是高分辨率的屏上 (如魅族M8系统 720×480) 而且datag ...