hdu1316(大数的斐波那契数)
题目信息:求两个大数之间的斐波那契数的个数(C++/JAVA)
pid=1316">http://acm.hdu.edu.cn/showproblem.php? pid=1316
这里给出java代码和c++代码
C++:AC代码
#include<iostream>
#include<string>
using namespace std;
string add(string s1,string s2){//字符串模拟大数加法
string s;
int len1,len2;
len1=s1.size()-1; len2=s2.size()-1;
int i=0,flag=0;
while(len1>-1&&len2>-1){
int sum=flag+(s1[len1--]-'0')+(s2[len2--]-'0');
s+=char ((sum)%10+'0');
flag=sum/10;
}
while(len1>-1){
int sum=flag+(s1[len1--]-'0');
s+=char ((sum)%10+'0');
flag=sum/10;
}
while(len2>-1){
int sum=flag+(s2[len2--]-'0');
s+=char ((sum)%10+'0');
flag=sum/10;
}
if(flag) s+=char ('0'+flag);
//cout<<s<<endl;
for(int i=0;i<s.size()/2;i++){
char c=s[i];
s[i]=s[s.size()-i-1];
s[s.size()-i-1]=c;
}
return s;
}
int compareto(string s,string s1){//模拟大数(字符串)比較
int j,i,len=s.size(),len1=s1.size();
for(i=0;s[i]=='0';i++);//去掉前导0
for(j=0;s1[j]=='0';j++);//去掉前导0
if(len-i>len1-j) return 1;
else if(len-i<len1-j) return -1;
else for(;s[i]==s1[j]&&i<len;i++,j++);
if(s[i]>s1[j]) return 1;//s>s1
if(s[i]<s1[j]) return -1;//s<s1
return 0;
}
string s[501];
int main()
{
string a,b;
s[1]="1"; s[2]="2";
for(int i=3;i<=500;i++){
s[i]=add(s[i-1],s[i-2]);
//if(i<10) cout<<s[i]<<endl;
}
while(cin>>a>>b){
if(a=="0"&&b=="0") break;
//cout<<compareto(a,b)<<endl;
int sum=0;
for(int i=1;i<=500;i++){
if(compareto(s[i],a)>=0&&compareto(s[i],b)<=0){
sum++;
}
}
cout<<sum<<endl;
}
return 0;
}
java代码:
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
BigInteger a,b;
BigInteger s[] = new BigInteger[1501];
s[0]=BigInteger.ZERO;
s[1]=BigInteger.ONE;
s[2]=BigInteger.valueOf(2);
for(int i=3;i<=1500;i++){
s[i]=s[i-1].add(s[i-2]);
}
//System.out.println(s[1500]);
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
a=sc.nextBigInteger();
b=sc.nextBigInteger();
if(a.add(b).compareTo(BigInteger.ZERO)==0) break;
int cnt=0;
//提高程序的鲁棒性
if(a.compareTo(b)>0){
BigInteger tmp=a;
a=b;
b=tmp;
}
for(int i=1;i<=1500;i++){
if(s[i].compareTo(a)>=0&&s[i].compareTo(b)<=0){
cnt++;
}
}
System.out.println(cnt);
}
}
}
hdu1316(大数的斐波那契数)的更多相关文章
- HDU1316(求区间斐波那契数的个数)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1316 题意:给两个数a和b,其中它们可能很大,最大到10^100,然后求去区间[a,b]内有多少个fib数 ...
- UVA 11582 Colossal Fibonacci Numbers! 大斐波那契数
大致题意:输入两个非负整数a,b和正整数n.计算f(a^b)%n.其中f[0]=f[1]=1, f[i+2]=f[i+1]+f[i]. 即计算大斐波那契数再取模. 一开始看到大斐波那契数,就想到了矩阵 ...
- 斐波那契数[XDU1049]
Problem 1049 - 斐波那契数 Time Limit: 1000MS Memory Limit: 65536KB Difficulty: Total Submit: 1673 Ac ...
- C++求斐波那契数
题目内容:斐波那契数定义为:f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)(n>1且n为整数) 如果写出菲氏数列,则应该是: 0 1 1 2 3 5 8 13 21 34 …… ...
- Project Euler 104:Pandigital Fibonacci ends 两端为全数字的斐波那契数
Pandigital Fibonacci ends The Fibonacci sequence is defined by the recurrence relation: F[n] = F[n-1 ...
- DP:斐波纳契数
题目:输出第 n 个斐波纳契数(Fibonacci) 方法一.简单递归 这个就不说了,小n怡情,大n伤身啊……当n=40的时候,就明显感觉到卡了,不是一般的慢. //输出第n个 Fibonacci 数 ...
- HDU4549 M斐波那契数
M斐波那契数列 题目分析: M斐波那契数列F[n]是一种整数数列,它的定义例如以下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) 如今给 ...
- HDU 5914 Triangle(打表——斐波那契数的应用)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5914 Problem Description Mr. Frog has n sticks, whos ...
- [Swift]LeetCode509. 斐波那契数 | Fibonacci Number
The Fibonacci numbers, commonly denoted F(n) form a sequence, called the Fibonacci sequence, such th ...
随机推荐
- Application、Activity Stack 和 Task的区别
Application类 Application和Activity,Service一样是Android框架的一个系统组件,当Android程序启动时系统会创建一个Application对象,用来存储系 ...
- 【IOS网络编程】socket编程 - Asyncsocket
Phone的标准推荐是CFNetwork 库编程,其封装好的开源库是 cocoa AsyncSocket库,用它来简化CFNetwork的调用,它提供了异步操作 主要特性有: 队列的非阻塞的读和写,而 ...
- 设置myeclipse的JSP、HTML的页面编码格式
JSP编码格式: 点击菜单上的window--->preferences 在弹出的对话框中点击MyEclise--->Files and Editors--->JSP, 在Encod ...
- 快速搭建Hadoop及HBase分布式环境
本文旨在快速搭建一套Hadoop及HBase的分布式环境,自己测试玩玩的话ok,如果真的要搭一套集群建议还是参考下ambari吧,目前正在摸索该项目中.下面先来看看怎么快速搭建一套分布式环境. 准备 ...
- 6.11---字节输入流数据根据字节输出流存到文件中---io流概念及分类---文件存储的原理和记事本打开的原理---字节流读取文件的原理---文件复制的原理
- JS——事件冒泡与捕获
事件冒泡与事件捕获 1.冒泡:addEventListener("click",fn,false)或者addEventListener("click",fn): ...
- HDU_1087_Super Jumping! Jumping! Jumping!_dp
Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 ...
- js获得子节点, 获得tab转json值
//提取表格的值,JSON格式 function GetTableData(table) { var tableData = new Array(); //创建数组 alert("行数:&q ...
- CSS 之自定义滚动条样式
::-webkit-scrollbar {/*滚动条整体样式*/ width: 5px; /*高宽分别对应横竖滚动条的尺寸*/ height: 1px; } ::-webkit-scrollbar-t ...
- appium 使用send_keys方法时报错: driver.find_element_by_id("com.hmkx.zgjkj:id/layout_search_bar_input").send_keys("123")
新手 使用send_keys方法时一直报错,上网查这个方法的用法,看着大家都是这么写的啊,后来直接搜索 报错信息,搜索结果的针对性就清楚多了. 原来是seleium版本太高导致的问题. 可以先在cmd ...