uva 10183 How many Fibs?
来源:互联网 发布:手机如何举报淘宝卖家 编辑:程序博客网 时间:2024/06/06 01:07
Problem B: How many Fibs?
Recall the definition of the Fibonacci numbers:
f1 := 1Given two numbers a and b, calculate how many Fibonacci numbers are in the range [ a, b].
f2 := 2
fn := fn-1 + fn-2 (n>=3)
Input Specification
The input contains several test cases. Each test case consists of two non-negative integer numbers a and b. Input is terminated by a=b=0. Otherwise, a<=b<=10100. The numbers a and b are given with no superfluous leading zeros.
Output Specification
For each test case output on a single line the number of Fibonacci numbers fi with a<=fi<=b.
Sample Input
10 1001234567890 98765432100 0
Sample Output
54
题意:每个数都是由前两的和所求;输入两个数a,b询问这两个之间包含a,b之间有多少个数,由于数字较大必须字符串处理,要用到大数加法,在查找时要用到字符串的比较
#include<iostream>#include<stdio.h>#include<string>#include<algorithm>using namespace std;string ss[2000];string add(string a,string b)// 大数加法 { string s; int i=0,j=0,l=0; int m,ans=0,k; while(a[i]&&b[j]) { m=a[i]-'0'+b[j]+ans-'0'; ans = m / 10; s+=(m%10+'0'); i++; j++; } if(i==a.size()) { while(i != b.size()) { m = ans + b[i] - '0'; ans = m / 10; s += m % 10 + '0'; i++; } if(ans) s += ans + '0'; } else if(i==b.size()) { while(i != a.size()) { m = ans + a[i] - '0'; ans = m / 10; s += m % 10 + '0'; i++; } if(ans) s += ans + '0'; } reverse(s.begin(), s.end()); return s;}int compare(string a,string b)// 字符串比较函数{ if(a.size()!=b.size()) { if(a.size()>b.size()) return 1; if(a.size()<b.size()) return -1; } else if(a.size()==b.size()) { for(int i=0; i<a.size(); i++) { if(a[i]>b[i]) return 1; else if(a[i]<b[i]) return -1; } return 0; }}int main(){ int i; ss[1]="1"; ss[2]="2"; for(i=3; i<1500; i++) { reverse(ss[i-1].begin(),ss[i-1].end()); reverse (ss[i-2].begin(),ss[i-2].end()); ss[i]=add(ss[i-1],ss[i-2]); reverse(ss[i-1].begin(),ss[i-1].end()); reverse(ss[i-2].begin(),ss[i-2].end()); }// for(i=30;i<=40;i++)// cout<<ss[i]<<endl; string a,b; while(cin>>a>>b&&a[0]!='0'||b[0]!='0')//在不等于零时要用或不能用且要不输入0 1 是无结果 { int ans=0; for(i=1; i<1500; i++) { if((compare(ss[i],a)>=0&&compare(ss[i],b)<=0)) { ans++; } else if(compare(ss[i],b)>0) break; } cout<<ans<<endl; } return 0;}
0 0
- uva 10183 how many fibs
- uva 10183 How Many Fibs
- UVa 10183 - How Many Fibs?
- UVA 10183 How Many Fibs?
- UVa 10183 - How Many Fibs?
- UVa 10183 - How Many Fibs?
- UVA 10183 How Many Fibs?
- UVa:10183 How Many Fibs?
- uva 10183 How many Fibs?
- UVa Problem Solution: 10183 - How many fibs?
- uva 10183 - How Many Fibs?(Fibonacci)
- How Many Fibs? - UVa 10183 大数加法
- How many fibs
- PKU2413 how many fibs
- How Many Fibs?
- UVa10183 - How Many Fibs?
- HDU1316:How Many Fibs?
- hdu1316 How Many Fibs?
- 网页链接Oracle实现数据的增删改查--gridview
- linux修改用户主目录的方法
- 常用的生活服务查询接口--使用python
- oracle-数据库(database)与实例(instance)区别
- VC 6.0和VS中工程和项目的属性配置
- uva 10183 How many Fibs?
- 使用itext生成PDF技巧一
- Matlab 2013a的安装与字体
- 中水处理设备:热电厂用中水回用设备处理方法介绍
- 黑马程序员:网络编程
- java线程的创建和运行
- OGG-01389错误
- Linux5下卸载Oracle11g步骤
- 在Android系统使用socket在Java层和native之间数据通信