题目1387:斐波那契数列

系统 1420 0
题目描述:

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。斐波那契数列的定义如下:

 

输入:

输入可能包含多个测试样例,对于每个测试案例,

输入包括一个整数n(1<=n<=70)。

 

输出:

对应每个测试案例,

输出第n项斐波那契数列的值。

 

样例输入:
        3
      
样例输出:
        2
        

看题目要求,需要输出到70的斐波那契数列,如果用常规的递归,显然层次过多,而且大部分是多余的。所以用一个数组来保持已经算出的斐波那契数列值,需要时直接从数组返回,大大节省时间。注意数组要用long long。

          #include <iostream>
          
            

#include 
          
          <fstream>
          
            

#include 
          
          <vector>
          
            

#include 
          
          <
          
            string
          
          >
          
            

#include 
          
          <algorithm>
          
            

#include 
          
          <map>
          
            

#include 
          
          <stack>
          
            

#include 
          
          <cmath>
          
            

#include 
          
          <queue>
          
            

#include 
          
          <
          
            set
          
          >
          
            

#include 
          
          <list>
          
            

#include 
          
          <cctype>
          
            

#include 
          
          <stdio.h>
          
            

#include 
          
          <stdlib.h>
          
            

#include 
          
          <
          
            string
          
          .h>


          
            #define
          
           REP(i,j,k) for(int i = j ; i < k ; ++i)


          
            #define
          
           MAXV (1000)


          
            #define
          
           INF (0x6FFFFFFF)


          
            using
          
          
            namespace
          
          
             std;


          
          
            long
          
          
            long
          
           ans[
          
            80
          
          
            ];


          
          
            long
          
          
            long
          
           fac(
          
            int
          
          
             x)

{

    
          
          
            if
          
          (x==
          
            0
          
          
            )

        
          
          
            return
          
          
            0
          
          
            ;

    
          
          
            if
          
          (x==
          
            1
          
          
            )

        
          
          
            return
          
          
            1
          
          
            ;

    
          
          
            if
          
          (ans[x]!=
          
            0
          
          
            )

        
          
          
            return
          
          
             ans[x];

    
          
          
            if
          
          (ans[x]==
          
            0
          
          
            )

    {

        ans[x]
          
          =fac(x-
          
            1
          
          )+fac(x-
          
            2
          
          
            );

        
          
          
            return
          
          
             ans[x];

    }

}


          
          
            int
          
          
             main()

{

    
          
          
            //
          
          
            freopen("in.txt","r",stdin);
          
          

    memset(ans,
          
            0
          
          ,
          
            sizeof
          
          (
          
            long long
          
          
            ));

    
          
          
            int
          
          
             n;

    ans[
          
          
            1
          
          ]=
          
            1
          
          
            ;

    fac(
          
          
            71
          
          
            );

    
          
          
            while
          
          (~scanf(
          
            "
          
          
            %d
          
          
            "
          
          ,&
          
            n))

        printf(
          
          
            "
          
          
            %lld\n
          
          
            "
          
          
            ,ans[n]);

    
          
          
            return
          
          
            0
          
          
            ;

}
          
        
      

 

        
          
             
          
        
      

题目1387:斐波那契数列


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论