时间限制: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. Zhulina 的高分子刷理论

    高分子刷的解析平均场理论有两种表述方式.一个是MWC理论(Macromolecules 1988, 21, 2610-2619),另外一个就是Zhulina和Birshtein这两位俄罗斯老太太的理论 ...

  2. 机器学习公开课笔记(8):k-means聚类和PCA降维

    K-Means算法 非监督式学习对一组无标签的数据试图发现其内在的结构,主要用途包括: 市场划分(Market Segmentation) 社交网络分析(Social Network Analysis ...

  3. ruby代码重构第二课

    (文章都是从我的个人主页上粘贴过来的, 大家也可以访问我的主页 www.iwangzheng.com) 在第一课里提取出了相通的代码,第二课里就把常量提取出来吧 一般把常量的定义写的对应的app/mo ...

  4. 对大一新生开始学习C语言课程谈几点看法

    大家好,首先祝贺大家进入了大学,迈入了大学的校门,也意味着开始了新的征程,希望大家能够有一个美好的大学四年. 先做下自我介绍,我叫李帅阳,(大家可以称呼我 李老师,或是班助,或是...)这是在邹欣老师 ...

  5. python4delphi 安装

    环境搭建: 目前p4d已经可以支持到XE7,可惜googlecode即将关闭,不知道作者是否会在github上继续更新. 因为此开源项目历史较久远,拿到源代码后可能还需要手动修改相关的文件引用,毕竟需 ...

  6. cmake编译dcmtk,并利用vs2010 进行开发mfc 程序

    这几天要处理 医学图像数据,经同学推荐 采用 dcmtk 关于 编译 dcmtk 是可参考如下blog 1. http://blog.csdn.net/okaimee/article/details/ ...

  7. scrapy和selenium结合抓取动态网页

    1.安装python (我用的是2.7版本的) 2.安装scrapy:   详情请参考 http://blog.csdn.net/wukaibo1986/article/details/8167590 ...

  8. Java 7 的7个新特性

    1.对集合类的语言支持:(??) 2.自动资源管理: 3.改进的通用实例创建类型推断:(??) 4.数字字面量下划线支持:(√) 5.switch中使用string:(√) 6.二进制字面量:(√) ...

  9. Apache配置文件中的deny和allow的使用

    Apache配置文件中的deny和allow的使用 由于产品的需要,最近在配置apache的负载均衡功能,但是在配置虚拟主机的访问权限的时候我们遇到了一些问题.主要问题是deny和allow的执行顺序 ...

  10. iOS 如何使用自定义字体

    首先,你需要有字体文件,比如 xxx.otf,之后你需要到工程的info配置文件中加入Fonts provided by application的值,如下图 之后,就可以使用字体名和UIFont的方法 ...