zoukankan      html  css  js  c++  java
  • 2Q

    Your objective for this question is to develop a program which will generate a fibbonacci number. The fibbonacci function is defined as such: 
    f(0) = 0 
    f(1) = 1 
    f(n) = f(n-1) + f(n-2) 
    Your program should be able to handle values of n in the range 0 to 50. 

    Input

    Each test case consists of one integer n in a single line where 0≤n≤50. The input is terminated by -1.

    Output

    Print out the answer in a single line for each test case.

    Sample Input

    3
    4
    5
    -1

    Sample Output

    2
    3
    5

    Hint

    you can use 64bit integer: __int64

    // 递归
     1 #include<stdio.h>
     2 
     3 long fibbonacci(int n)
     4 {
     5     if(n==0) return 0;
     6     else if(n==1) return 1;
     7     else return fibbonacci(n-1) + fibbonacci(n-2);
     8 }
     9 
    10 int main()
    11 {
    12     int n;
    13     while(scanf("%d", &n), n!=-1)
    14         printf("%d
    ", fibbonacci(n));
    15     return 0;
    16 }
    Time Limit Exceeded
    // 
    __intx
    int/long __int64

    signed: -2^31 ~ 2^31-1 ~ 2.1*10^9

    unsigned:       0 ~ 2^32-1 ~ 4.29*10^9

    signed:-2^63 ~ 2^63-1 ~ 9.2*10^18 

    unsigned:    0 ~ 2^64-1 ~ 1.8*10^19 

    // signed: scanf("%I64d",&a);    printf("%I64d",a);
      unsigned: scanf("%I64u",&a);    printf("%I64u",a);
    // 说明:
      1、int64不能用作为循环变量
      2、int64的操作速度较慢
     1 #include<stdio.h>
     2 
     3 __int64 fibbonacci(int n)
     4 {
     5     __int64 x1=0, x2=1, x3=0;
     6     int i;
     7     for(i=2;i<=n;i++)
     8     {
     9         x3=x1+x2;
    10         x1=x2; x2=x3;
    11     }
    12     if(x3) return x3;
    13     else
    14     {
    15         if(n) return x2;
    16         else return x1;
    17     }
    18 }
    19 
    20 int main()
    21 {
    22     int n; __int64 i;
    23     while(scanf("%d", &n), n!=-1)
    24     {
    25         i=fibbonacci(n);
    26         printf("%I64d
    ", i);  /* __intxx io格式 */ 
    27     }
    28     return 0;
    29 }
    AC
    // 从第47个斐波那契数开始,其大小超过int范围;
    // 从第48个斐波那契数开始,其大小超过unsigned int范围;
    // 从第93个斐波那契数开始,其大小超过__int64范围;
    // 从第94个斐波那契数开始,其大小超过unsigned __int64范围
  • 相关阅读:
    Delphi中解析Xml的控件-SimDesign NativeXml
    DELPHI判断是否64位操作系统
    几个获取Windows系统信息的Delphi程序
    delphi假死线程堵塞解决办法
    Delphi ADO数据操作封装类
    Delphi的时间与字符串函数代码示例
    【BZOJ2132】圈地计划 最小割
    【BZOJ3544】[ONTAK2010]Creative Accounting 前缀和+set
    【BZOJ4281】[ONTAK2015]Związek Harcerstwa Bajtockiego LCA
    【BZOJ2083】[Poi2010]Intelligence test 二分
  • 原文地址:https://www.cnblogs.com/goldenretriever/p/10356654.html
Copyright © 2011-2022 走看看