题目: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 食物 —— 生成函数的更多相关文章

  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 把式子写出来,化一化,变成 x / ((1-x)^4) ,变成几个 sigma 相乘的 ...

  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. Mondiran创建连接

    曾经使用jdbc创建连接的时候使用的url是这种形式:jdbc:mysql://hostname:port/database?key1=value1&key2=value2,在URL须要以&q ...

  2. PS常用平面设计制作尺寸

      PHOTPSHOP照片处理    数码照片尺寸 平面设计常用制作尺寸 名片 横版:90*55mm<方角> 85*54mm<圆角> 竖版:50*90mm<方角> ...

  3. C++ ADO 连接 mysql

    1.安装mysql-5.0.22-win32,mysql-connector-odbc-5.1.12-win32.msi    然后:开始菜单->设置->控制面板->管理工具-> ...

  4. 无法安装 golang.org/x/tools/的库

    安装godep 官方的安装文档是使用go get github.com/tools/godep,很可惜,因为“网络”问题会报一个找不到golang.org/x/tools/go/vcs的错误. 而ht ...

  5. Spring的Scheme位置

    org.springframework.aop.config org.springframework.contex.config org.springframework.ejb.config org. ...

  6. xml实现AOP

    1.使用<aop:config></aop:config> 2.首先我们需要配置<aop:aspect></aop:aspect>,就是配置切面 2.1 ...

  7. H5实现多图片预览上传,可点击可拖拽控件介绍

    版权声明:欢迎转载,请注明出处:http://blog.csdn.net/weixin_36380516 在做图片上传时发现一个蛮好用的控件,支持多张图片同时上传,可以点击选择图片,也可以将图片拖拽到 ...

  8. javascript 高级编程系列 - 基本数据类型

    javascript中的基本数据类型包括: Undefined, Null, Boolean, Number, String 5种数据类型 1. Undefined 类型 (只有一个值 undefin ...

  9. OcelotAPI 简单使用—服务发现、流控

    我这人比较懒 直接上配置文件的图 其中serviceName是服务名称, LoadBalancer是负载均衡策略. 对于流控我为了做测试写的1s 限制5次请求. 剩下的看名字就OK了. 要使用服务发现 ...

  10. 小白学开发(iOS)OC_ 字符串重组(2015-08-13)

    // //  main.m //  字符串重组 // //  Created by admin on 15/8/13. //  Copyright (c) 2015年 admin. All right ...