UESTC 2015dp专题 E 菲波拉契数制 dp
菲波拉契数制
Time Limit: 20 Sec Memory Limit: 256 MB
题目连接
http://acm.uestc.edu.cn/#/contest/show/65
Description
我们定义如下数列为菲波拉契数列:
F(1)=1
F(2)=2
F(i)=F(i−1)+F(i−2)(i>=3)
给定任意一个数,我们可以把它表示成若干互不相同的菲波拉契数之和。比如13有三种表示法
13=13
13=5+8
13=2+3+8
现在给你一个数n,请输出把它表示成若干互不相同的菲波拉契数之和有多少种表示法。
wij 千 克的蛋糕,Gorwin从左上角(1,1)的格子开始走,走到右下角(n,m)的格子。在每一步中,Gorwin可以向右或者向下走,即是:Gorwin 站在(i,j)的时候,她可以走向(i+1,j)或者(i,j+1) (然而她不能走出这个花园)。 当Gorwin到达一个格子的时候,她可以把那个格子里面的蛋糕吃完或者不吃。但是,她不能只吃一部分。她的胃不是那么大,所以她最多只能吃K千克的蛋 糕。现在,Gorwin站在左上角,她在看蛋糕园的地图,想要找出一条路,能够使得她吃到的蛋糕最多的一条路。请你来帮帮忙。
Input
第一样一个数T,表示数据组数,之后T行,每行一个数n。
T≤105
1≤n≤105
Output
输出T行,每行一个数,即n有多少种表示法。
Sample Input
Sample Output
1 1 2 1 2 3
HINT
题意
题解:
其实这道题是dp,转化成2进制做
代码:
//qscqesze #include <cstdio> #include <cmath> #include <cstring> #include <ctime> #include <iostream> #include <algorithm> #include <set> #include <vector> #include <sstream> #include <queue> #include <typeinfo> #include <fstream> #include <map> #include <stack> typedef long long ll; using namespace std; //freopen("D.in","r",stdin); //freopen("D.out","w",stdout); #define sspeed ios_base::sync_with_stdio(0);cin.tie(0) #define maxn 200001 #define mod 10007 #define eps 1e-9 int Num; char CH[20]; //const int inf=0x7fffffff; //нчоч╢С const int inf=0x3f3f3f3f; /*inline void P(int x) {Num=0;if(!x){putchar('0');puts("");return;}while(x>0)CH[++Num]=x%10,x/=10;while(Num)putchar(CH[Num--]+48);puts(""); } */ inline ll read() {ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f; } inline void P(int x) {Num=0;if(!x){putchar('0');puts("");return;}while(x>0)CH[++Num]=x%10,x/=10;while(Num)putchar(CH[Num--]+48);puts(""); } //************************************************************************************** ll fib[maxn]; int topf; vector<int> vec; void init() {int i;fib[0]=fib[1]=1;for (i=2;fib[i-1]<1000000000000000000LL;i++){fib[i]=fib[i-1]+fib[i-2];}topf=i-1; } ll f[maxn][2]; int a[maxn]; ll n,m; int main() {int i,j,k;int x,y,z;int nn;scanf("%d",&nn);init();while (nn--){n=read();vec.clear();for (i=topf;i>0;i--){if (fib[i]<=n){n-=fib[i];vec.push_back(i);}}sort(vec.begin(),vec.end());for (i=0;i<vec.size();i++){a[i]=(-((i)?vec[i-1]:1)+vec[i]);}f[0][1]=1;f[0][0]=a[0]/2;for (i=1;i<vec.size();i++){f[i][0]=((a[i]-1)/2)*f[i-1][1]+((a[i])/2)*f[i-1][0];f[i][1]=f[i-1][0]+f[i-1][1];}printf("%lld\n",f[vec.size()-1][0]+f[vec.size()-1][1]);}return 0; }
UESTC 2015dp专题 E 菲波拉契数制 dp相关推荐
- 菲波拉契数列(传统兔子问题)
题目: 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 斐波那契数: 亦称之为斐波那契数列(意大利语: ...
- java - 菲波拉契数列 兔子个数
菲波拉契数列:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 结果演示 代码演示 package com.tw ...
- HDU5620 KK's Steel【菲波拉契数列+水题】
KK's Steel Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- 菲波拉契数列的通项公式
菲波拉契数列的通项公式– F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n} : 题目:hdu--1568: http://acm.hdu.edu.cn/showpro ...
- 小白兔生小白兔-菲波拉契数列问题
有一对小白兔,从出生后第3个月起每个月都生一对小白兔,小白兔长到第三个月后每个月又生一对小白兔,假如小白兔都不死,问每个月的小白兔总数为多少? 这道题是典型的斐波拉切数列问题,其特点就是从第三列开始就 ...
- 著名的菲波拉契(Fibonacci)数列,其第一项为0,第二项为1,从第三项开始,其每一项都是前两项的和。编程求出该数列前N项数据。
#include <stdio.h>int main() { int f(int n);void k(int n);k(10);return 0; }// 遍历打印函数 void k(in ...
- 冒泡排序,斐波拉契迭代、生成器
冒泡排序: l=[1,3,0,100,1000,8,2,9,5,11,8]def maopao(l):for i in range(len(l)-1):if l[i+1] < l[i]:a= l ...
- 两个经典递归问题:菲波那契数列 + 汉诺塔
一.递归问题的处理步骤 1)抽象出递归公式:对实际问题进行部分穷举,抽象出递归关系(关键),并列出"递归表达式" 2)确定递归出口:找出递归调用终止点 二.菲波那契数列 实际问题: ...
- [python]练习之递归和循环实现斐波拉契数列
1 # 程序功能:用递归和循环实现斐波拉契数列 2 # 0 1 1 2 3 5 8 13 21 34 3 4 def digui_fibo(number): 5 if number == 1: 6 r ...
最新文章
- HashMap 和 Hashtable 的 6 个区别,最后一个没几个人知道!
- c#只用一个for输出三角形
- python__基础 : 异常处理与自定义异常
- python怎么用数据修改,如何更改数据框Python中的值
- python 字符串split 正则分割 换行符_python数据分析实战-JOINamp;SPLIT分割与合并
- Some thoughts on my own O/R Mapping or Code Generation tools
- Bootstrap组件1_字体图标
- mysql存储过程游标移动_mysql动态游标与mysql存储过程游标(示例)
- 输入框聚焦隐藏提示语
- sql server sysobjects 中type 和xtype
- python中构造方法和析构方法的区别_基于Python构造方法与析构方法的研究
- jsp之servlet模板问题
- 阿里云云计算 8 ECS的实例规格
- Neurons and the brains
- 供应商层次分析法判断矩阵(文末附软件)
- 06年他预测阿里巴巴会干掉慧聪网,当时所有人都在嘲笑他
- ue4vr插件_UE4虚幻引擎可视化VR实例3dsMax全流程中级教学
- php图片背景平铺,css如何让背景图片平铺?css背景图片平铺四种方式介绍
- 这4款网页书签管理工具,整理收藏夹更轻松
- linux开机自启jar包