第四届“图灵杯”NEUQ-ACM程序设计竞赛 C: 来简单地数个数【Java大数】

来源:互联网 发布:亿级别数据库 编辑:程序博客网 时间:2024/05/17 22:54


问题 C: 来简单地数个数

时间限制: 1 Sec  内存限制: 64 MB
提交: 728  解决: 232
[提交][状态][讨论版]

题目描述

这是一个斐波那契数列:
f1 = 1 
f2 = 2 
fn = fn-1 + fn-2     (n>=3)
蔡老板想知道,给你两个数a、b,你能否求出在区间[a,b]里有多少个斐波那契数。

输入

多组数据输入。一行为一组输入数据,包括两个非负整数a、b(a <= b <= 10^100),当a=b=0时输入终止。

输出

对每组输入,输出单独一行,包含一个整数表示区间[a,b]里的斐波那契数个数。

样例输入

10 1001234567890 98765432100 0

样例输出

54

思路:


Java暴力求一波大数即可。


import java.io.*;import java.util.*;import java.math.BigInteger;   public class Main{    public static void main(String args[]) throws Exception {        Scanner cin=new Scanner(System.in);        BigInteger[] f = new BigInteger[1200];        f[1]=BigInteger.valueOf(1);        f[2]=BigInteger.valueOf(2);        for(int i=3;i<=1100;i++)        {            f[i]=f[i-1].add(f[i-2]);        }        while (cin.hasNext()) {            int cont=0;            BigInteger l,r;            BigInteger Zero=BigInteger.valueOf(0);            l = cin.nextBigInteger();            r = cin.nextBigInteger();           if(l.compareTo(Zero)==0&&r.compareTo(Zero)==0)    //       {                break;     //      }            for(int i=1;i<=1100;i++)            {                if(f[i].compareTo(l)>=0&&f[i].compareTo(r)<=0)cont++;            }            System.out.println(cont);         //   c=a.add(b);         //   c = a+b;         //   System.out.println(f[2].toString());        }    }}






阅读全文
0 0
原创粉丝点击