hdu1316(区间范围内的fibs树)

大体还是和求fibs差不多的,只是区间比较有点麻烦,可以加深接触string

//

//  main.cpp

//  5.2

//

//  Created by Mr.Xue on 17/7/15.

//  Copyright © 2017 Mr.Xue. All rights reserved.

//


#include <iostream>

#include <string.h>

#include <stdio.h>

#include <algorithm>

#include <string>

#define max 10005

using namespace std;

string a[max];

string sum(string s1,string s2)

{

    int len1=s1.length();

    int len2=s2.length();

    if(len2>len1)

    {

        string temp;

        temp=s1;

        s1=s2;

        s2=temp;

    }

    for(int i=len1-1,j=len2-1;i>=0;i--,j--)

    {

        s1[i]=char(s1[i]+(j>=0?s2[j]-'0':0));

        if(s1[i]-'0'>=10)

        {

            s1[i]=(s1[i]-'0')%10+'0';

            if(i)

                s1[i-1]++;

            else

                s1='1'+s1;

        }

    }

    return s1;

}

int main()

{

    string x;

    string y;

    a[1]='1';

    a[2]='2';

    for(int i=3;i<max;i++)

        a[i]=sum(a[i-1],a[i-2]);

    while(1)

    {

        cin>>x;

        cin>>y;

        if(x[0]=='0'&&y[0]=='0')

            break;

        int sum=0;

        for(int i=1;i<max;i++)

        {

            if(((a[i].compare(x)>=0&&a[i].length()==x.length())

               ||a[i].length()>x.length())

               &&((a[i].compare(y)<=0&&a[i].length()==y.length())

                  ||a[i].length()<y.length()))

                sum++;

            if(a[i].length()>y.length())

                break;

        }

        cout<<sum<<endl;

    }

    return 0;

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值