时间限制:500MS  内存限制:65536K
提交次数:270 通过次数:16

题型: 编程题   语言: C++;C

Description

给你如下Fibonacci 数的定义:
F1 = 1
F2 = 2
Fn = Fn-1 + Fn-2 (n >= 3)
给你两个数a与b,现要求你计算在a与b之间(包括a、b)有多少个Fibonacci 数

输入格式

有多行,每行有两个数a、b,使用空格分隔,a <= b <= 10^100(即最大10的100次方)
最后一行为两个0

输出格式

除了最后一行,其它每一行要求输出在a与b之间的Fibonacci 数的个数,一行一个

输入样例

10 100
1234567890 9876543210
0 0

输出样例

5
4

作者

admin

思路:这道题一早就盯着他了,但是一直以为自己不会做(a,b<=10^100) 被范围吓到了

后来在hdu 中做了一道题http://acm.hdu.edu.cn/showproblem.php?pid=1715,大概题意是给出n,求fb的第n项F(n), n的范围是<1000

前1000项的fb是很大的,有1、2百位,这只能用数组存了,那就可以用高精度加法,把前1000项的fb制成表;

而在这道题中,是给出a ,b  求a到b之间的fb个数,同上面的方法,先打一个前1000项的fb表(大数加法),然后 a,b在表中找位置(大数比较),那么他们之间的个数就是了

#include<cstdio>
#include<cstring>
char fb[][];//存储前1000项的fb
//高精度比较,返回1表示a>b 返回-1表示a=b 0表示a<b
int bcmp(char a[],char b[])
{
int i,n,m;
n=strlen(a);
m=strlen(b);
if(n>m) return ;//先比长度
else if(n<m) return ;
else//长度相同的时候再从高位开始逐一比较
{
for(i=; i<n; i++)
{
if(a[i]>b[i]) return ;
else if(a[i]<b[i]) return ;
else continue;
}
}
return -;//全部比较完毕,以上return未生效 就是 a=b
}
//高精度加法
void bplus(char a[],char b[],int t)
{
int c[],d[];
memset(c,,sizeof(c));
memset(d,,sizeof(d));
int n,m,i,j,k;
i=;
n=strlen(a);
m=strlen(b);
//字符数组转为整形数组 ,逆置存放
for(k=n-; k>=; k--)
c[i++]=a[k]-'';
j=;
for(k=m-; k>=; k--)
d[j++]=b[k]-''; k=n>m?n:m;
for(i=; i<=k; i++)
{
c[i+]+=(c[i]+d[i])/;
c[i]=(c[i]+d[i])%;
}
if(c[k+]) k=k+;
//将整形数组,转化为字符数组存在fb数组
j=;
for(i=k; i>=; i--)
fb[t][j++]=c[i]+'';
}
int main()
{
int i,j;
char s1[],s2[];
memset(fb,'\0',sizeof(fb));
fb[][]='';
fb[][]='';
//打表
for(i=; i<=; i++)
bplus(fb[i-],fb[i-],i); while(scanf("%s%s",s1,s2))
{
int cnt=;
if(!((s1[]-'')||(s2[]-''))) break;
for(i=; i<=; i++)
{
//查找a的位置 i
if(bcmp(fb[i],s1)==-)
{
cnt=;
i++;
break;
}
if(bcmp(fb[i],s1)>)
{
cnt=;
break;
}
}
for(j=i; j<=; j++)
if(bcmp(fb[j],s2)<=) cnt++;
else break;
printf("%d\n",cnt);
}
return ;
}

1143 多少个Fibonacci数的更多相关文章

  1. SCAU1143 多少个Fibonacci数--大菲波数【杭电-HDOJ-1715】--高精度加法--Fibonacci数---大数比较

    /*******对读者说(哈哈如果有人看的话23333)哈哈大杰是华农的19级软件工程新手,才疏学浅但是秉着校科联的那句“主动才会有故事”还是大胆的做了一下建一个卑微博客的尝试,想法自己之后学到东西都 ...

  2. 关于java的递归写法,经典的Fibonacci数的问题

    经典的Fibonacci数的问题 主要想展示一下迭代与递归,以及尾递归的三种写法,以及他们各自的时间性能. public class Fibonacci { /*迭代*/ public static ...

  3. java 练手 Fibonacci数

    Problem B Fibonacci数 时间限制:3000 ms  |  内存限制:65535 KB   描述 无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibonacci数列 ...

  4. Fibonacci数

    Fibonacci数 时间限制:3000 ms  |  内存限制:65535 KB 难度:1   描述 无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibonacci数列,它可以递 ...

  5. 每日一小练——高速Fibonacci数算法

    上得厅堂,下得厨房,写得代码,翻得围墙,欢迎来到睿不可挡的每日一小练! 题目:高速Fibonacci数算法 内容:先说说Fibonacci数列,它的定义是数列:f1,f2....fn有例如以下规律: ...

  6. 一个小的日常实践——高速Fibonacci数算法

    上得厅堂.下得厨房.写得代码,翻得围墙,欢迎来到睿不可挡的每日一小练! 题目:高速Fibonacci数算法 内容:先说说Fibonacci数列,它的定义是数列:f1,f2....fn有例如以下规律: ...

  7. ACM Fibonacci数 计算

    Fibonacci数 时间限制:3000 ms  |  内存限制:65535 KB 难度:1   描述 无穷数列1,1,2,3,5,8,13,21,34,55...称为Fibonacci数列,它可以递 ...

  8. 计算fibonacci数(多种方法)

    #include <iostream> using namespace std; //计算fibonacci数 //方法一:二分递归法,时间复杂度为O(2^n),额外空间复杂度为常数 in ...

  9. 利用JavaScript打印出Fibonacci数(不使用全局变量)

    从汤姆大叔的博客里看到了6个基础题目:本篇是第4题 - 利用JavaScript打印出Fibonacci数(不使用全局变量) 解题关键: 1.Fibonacci数列的规律 2.递归 解点1:Fibon ...

随机推荐

  1. C# 我理解的接口、抽象类、以及事件

    一.摘要 面试中无数次被问及到什么是接口,什么是抽象类,接口和抽象类有什么区别?什么是委托,什么是事件. 请写出猫叫了,老鼠跑了的例子..... 这些东西对于一些初学者来说可能还真的有点搞不懂,对于一 ...

  2. [Effective JavaScript 笔记]第54条:将undefined看做“没有值”

    undefined值很特殊,每当js无法提供具体的值时,就会产生undefined. undefined值场景 未赋值的变量的初始值即为undefined. var x; x;//undefined ...

  3. unity3d webplayer 16:9 居中显示模板

    原地址:http://www.cnblogs.com/88999660/archive/2013/04/12/3016773.html <!DOCTYPE html PUBLIC "- ...

  4. IOS 使用横屏

    http://lizhuang.iteye.com/blog/1684881 在iPad应用开发时如何让设备只支持横屏(landscape)模式,我做了多次尝试,并没有发现比较简捷的设置方法.我尝试了 ...

  5. [OpenJudge 3063]罪犯问题

    [OpenJudge 3063]罪犯问题 试题描述 一天,警官抓获了N个嫌犯,审问N个罪犯的途中,作为警长助手的你突然发现其中被确定为罪犯的K号人是你曾经出生入死的兄弟,你不能眼睁睁看着他被抓进牢里. ...

  6. hMailServer+foxmail配置局域网邮件服务器

    1.下载hMailServer并安装,请参考以下网址 https://www.hmailserver.org 2.安装foxmail,官网如下: http://www.foxmail.com/ 3.配 ...

  7. Dynamic Morphing Square(动态变形矩阵)

    题目描述: 解题思路: 先对输入的N进行判断,是否不小于3,如果小于3,需要继续输入一个新的数,知道输入的N比3大. 第一个打印的矩阵,*号为最外面一圈,其余全为-. 第二个打印的矩阵,*号向内缩减了 ...

  8. openCV的基本操作

    http://www.cnblogs.com/luluathena/archive/2010/09/29/1838471.html

  9. Dmaven.multiModuleProjectDirectory system propery is not set.

    eclipse中使用maven插件的时候,运行run as maven build的时候报错-Dmaven.multiModuleProjectDirectory system propery is ...

  10. DCMTK3.6.1(MD支持库)安装说明

    转载:http://qimo601.iteye.com/blog/1685135 [前言] 最近,因为需要开发DICOM网管模块,必须使用DCMTK的DcmNet模块.但是DCMTK3.6.0在Dcm ...