博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj3028 食物
阅读量:5377 次
发布时间:2019-06-15

本文共 1175 字,大约阅读时间需要 3 分钟。

3028: 食物

Time Limit: 3 Sec  Memory Limit: 128 MB
Submit: 735  Solved: 514
[][][]

Description

明明这次又要出去旅游了,和上次不同的是,他这次要去宇宙探险!我们暂且不讨论他有多么NC,他又幻想了他应
该带一些什么东西。理所当然的,你当然要帮他计算携带N件物品的方案数。他这次又准备带一些受欢迎的食物,
如:蜜桃多啦,鸡块啦,承德汉堡等等当然,他又有一些稀奇古怪的限制:每种食物的限制如下:
承德汉堡:偶数个
可乐:0个或1个
鸡腿:0个,1个或2个
蜜桃多:奇数个
鸡块:4的倍数个
包子:0个,1个,2个或3个
土豆片炒肉:不超过一个。
面包:3的倍数个
注意,这里我们懒得考虑明明对于带的食物该怎么搭配着吃,也认为每种食物都是以‘个’为单位(反正是幻想嘛
),只要总数加起来是N就算一种方案。因此,对于给出的N,你需要计算出方案数,并对10007取模。

Input

输入一个数字N,1<=n<=10^500
 

Sample Input

输入样例1
1
输入样例2
5

Sample Output

输出样例1
1
输出样例2
35
分析:生成函数的裸题. 
   现将每一个式子化成分式,相乘后能消掉很多项. 最后将式子展开看其组合意义即可.
   (1 + x + x^2 + x^3 +......)^n中x^p前系数的组合意义是将p拆分成若干个非负整数相加的方案数. 利用隔板法求解即可.

 

#include 
#include
#include
#include
using namespace std;const int mod = 10007;char s[1010];int n;int main(){ scanf("%s",s + 1); int t; for (int i = 1; i <= strlen(s + 1); i++) { if (i == 1) t = s[i] - '0'; else t = (t * 10 % mod + s[i] - '0') % mod; } n = t; printf("%d\n",n * (n + 1) % mod * (n + 2) % mod * 1668 % mod); return 0;}

 

转载于:https://www.cnblogs.com/zbtrs/p/8676008.html

你可能感兴趣的文章
Spring学习笔记之五----Spring MVC
查看>>
ionic v1.1.0 select 安卓不工作
查看>>
智能的API、云服务和SOA测试解决方案——Parasoft SOAtest
查看>>
前端之html的常用标签2和css基本使用
查看>>
去掉 map area 在IE里点击时出现的框
查看>>
[HDU 3652] B-number
查看>>
详解主席树(可持久化线段树)
查看>>
php 根据给定的年份和月份获取该年份该月份的起始和结束时间
查看>>
用C#实现的条形码和二维码编码解码器
查看>>
DFA与动态规划
查看>>
多线程:简易版本生产消费者模式纯语言概述
查看>>
自动生成 顺序图(序列图) 软件
查看>>
大问题小bug
查看>>
【皇甫】☀那些数据源...
查看>>
FastReport.Net使用:[6]HTML标签使用
查看>>
prime number
查看>>
处理字符串的一些js/jq方法(去除HTML,去除空格,计算真实长度,截取中英文字符)...
查看>>
淘宝分类导航条;纯css实现固定导航栏
查看>>
分布的拟合和检验
查看>>
Project Euler:Problem 42 Coded triangle numbers
查看>>