菲波拉契数制

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

6 1 2 3 4 5 13

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相关推荐

  1. 菲波拉契数列(传统兔子问题)

    题目: 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 斐波那契数: 亦称之为斐波那契数列(意大利语: ...

  2. java - 菲波拉契数列 兔子个数

    菲波拉契数列:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 结果演示 代码演示 package com.tw ...

  3. HDU5620 KK's Steel【菲波拉契数列+水题】

    KK's Steel Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total ...

  4. 菲波拉契数列的通项公式

    菲波拉契数列的通项公式– F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n} : 题目:hdu--1568: http://acm.hdu.edu.cn/showpro ...

  5. 小白兔生小白兔-菲波拉契数列问题

    有一对小白兔,从出生后第3个月起每个月都生一对小白兔,小白兔长到第三个月后每个月又生一对小白兔,假如小白兔都不死,问每个月的小白兔总数为多少? 这道题是典型的斐波拉切数列问题,其特点就是从第三列开始就 ...

  6. 著名的菲波拉契(Fibonacci)数列,其第一项为0,第二项为1,从第三项开始,其每一项都是前两项的和。编程求出该数列前N项数据。

    #include <stdio.h>int main() { int f(int n);void k(int n);k(10);return 0; }// 遍历打印函数 void k(in ...

  7. 冒泡排序,斐波拉契迭代、生成器

    冒泡排序: 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 ...

  8. 两个经典递归问题:菲波那契数列 + 汉诺塔

    一.递归问题的处理步骤 1)抽象出递归公式:对实际问题进行部分穷举,抽象出递归关系(关键),并列出"递归表达式" 2)确定递归出口:找出递归调用终止点 二.菲波那契数列 实际问题: ...

  9. [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 ...

最新文章

  1. HashMap 和 Hashtable 的 6 个区别,最后一个没几个人知道!
  2. c#只用一个for输出三角形
  3. python__基础 : 异常处理与自定义异常
  4. python怎么用数据修改,如何更改数据框Python中的值
  5. python 字符串split 正则分割 换行符_python数据分析实战-JOINamp;SPLIT分割与合并
  6. Some thoughts on my own O/R Mapping or Code Generation tools
  7. Bootstrap组件1_字体图标
  8. mysql存储过程游标移动_mysql动态游标与mysql存储过程游标(示例)
  9. 输入框聚焦隐藏提示语
  10. sql server sysobjects 中type 和xtype
  11. python中构造方法和析构方法的区别_基于Python构造方法与析构方法的研究
  12. jsp之servlet模板问题
  13. 阿里云云计算 8 ECS的实例规格
  14. Neurons and the brains
  15. 供应商层次分析法判断矩阵(文末附软件)
  16. 06年他预测阿里巴巴会干掉慧聪网,当时所有人都在嘲笑他
  17. ue4vr插件_UE4虚幻引擎可视化VR实例3dsMax全流程中级教学
  18. php图片背景平铺,css如何让背景图片平铺?css背景图片平铺四种方式介绍
  19. 这4款网页书签管理工具,整理收藏夹更轻松
  20. linux开机自启jar包

热门文章

  1. websocket 群/单聊 基础
  2. 用python实现微信消息群发和微信自动回复
  3. Redux源码浅析系列(一):`CreateStore`
  4. 杭州新设大数据资源管理局 推动资源共享、市场规范
  5. 解密SSL流量,发现隐藏威胁
  6. POJ 1014: Dividing
  7. 网络工程师的经典爱情观
  8. 初涉网络实验-路由器端口的开启与配置
  9. 用滑动窗口来解决最长无重复子串问题
  10. js里Date时间格式的常用转换-------(GMT转成yyyy-MM-dd)--------(根据日期获得星期几)...