zoukankan      html  css  js  c++  java
  • How Many Fibs?

    How Many Fibs?

    点我

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 5158    Accepted Submission(s): 2007


    Problem Description
    Recall the definition of the Fibonacci numbers:
    f1 := 1
    f2 := 2
    fn := fn-1 + fn-2 (n >= 3)

    Given two numbers a and b, calculate how many Fibonacci numbers are in the range [a, b].
     
    Input
    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 <= 10^100. The numbers a and b are given with no superfluous leading zeros.
     
    Output
    For each test case output on a single line the number of Fibonacci numbers fi with a <= fi <= b.
     
    Sample Input
    10 100
    1234567890 9876543210
    0 0
     
    Sample Output
    5
    4
     
    思路很简单,但做得时候思维不严谨小的地方错了好多,一直在debug
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    using namespace std;
    #define len 10
    int _cmp(char *a,char *b)    
    {
        int i=0,j,count=0;
        if(strlen(a)<strlen(b))
            return 1;
        else if(strlen(a)>strlen(b))
            return -1;
        else
        {
            char x[110];
            int j=0,len1=strlen(a);
            for(i=len1-1;i>=0;i--)    /*倒置,全部都是高位在右,从右往左比较*/
                x[j++]=a[i];
            x[j]='';
            i=len1-1;
            while(i>=0)
            {
                if(b[i]>x[i])
                    return 1;
                else if(b[i]==x[i])
                    i--;
                else
                {
                    return -1;
                }
            }
            return 0;
        }
    }
    char f[600][110];
    int main()
    {
        memset(f,'0',sizeof(f));
        int c,i,j,count,n;
        char a[101],b[101];
        f[1][0]='1';
        f[2][0]='2';
        for(i=3;i<600;i++)
        {
            c=0;
            for(j=0;j<110;j++)
            {
                f[i][j]=(f[i-2][j]+f[i-1][j]+c-2*'0')%len+'0';
                c=(f[i-2][j]+f[i-1][j]+c-2*'0')/len;
            }
        }
        for(i=1;i<600;i++)    /*变成字符串方便实用strlen()*/
            for(j=109;j>=0;j--)
                if(f[i][j]!='0')
                {
                    f[i][j+1]='';
                    break;
                }
        while(cin>>a>>b)
        {
            if(a[0]=='0'&&b[0]=='0')
                break;
            count=0;
            j=0;
            for(i=1;i<=599;i++)
            {
                if(_cmp(a,f[i])>=0&&_cmp(b,f[i])<=0)
                    count++;
                if(_cmp(b,f[i])>=0)
                    break;
            }
            cout<<count<<endl;
        }
    }
  • 相关阅读:
    mmseg4j 中文分词 1.6 版发布
    中文分词 mmseg4j 在 lucene 中的使用示例
    Solr Multicore 试用小记
    学习Javascript和Jquery必备资料
    前端开发 IE 中的常用调试工具
    jQuery学习教程(九):动画
    【jquery插件】SELECT美化,下拉框美化
    Jquery 基础实例源码分享
    关于Jquery显示隐藏的分析
    jQuery判断一个元素是否为另一个元素的子元素(或者其本身)
  • 原文地址:https://www.cnblogs.com/a1225234/p/4677275.html
Copyright © 2011-2022 走看看