zoukankan      html  css  js  c++  java
  • Fibonacci升级版题解

    题目描述:

    数学神童zouyu终于把0到100000000的Fibonacci数列                                                                                           (f[0]=0,f[1]=1;f[i] = f[i-1]+f[i-2](i>=2))的值全部给背了下来。

    接下来,CodeStar决定要考考他,

    于是每问他一个数字,他就要把答案说出来,不过有的数字太长了。

    所以规定超过4位的只要说出前4位就可以了,

    可是CodeStar自己又记不住。于是他决定编写一个程序来测验zouyu说的是否正确。

    输入:

    输入若干数字n(0 <= n <= 100000000),每个数字一行,读到文件尾。

    输出:

    输出f[n]的前4个数字(若不足4个数字,就全部输出)。

    输入例子:

    0 1 2 3 4 5 35 36 37 38 39 40

    输出例子:

    0 1 1 2 3 5 9227 1493 2415 3908 6324 1023
     
     
    C++题解:
     
    #include<iostream>
    #include <stdio.h>
    #include <math.h>
    using namespace std;
    int fibonacci[21]={0,1,1};
    const double f=(sqrt(5.0)+1.0)/2.0;
    int main()
    {
    double sum;
    int n,i;
    for(i=3;i<=20;i++)fibonacci[i]=fibonacci[i-1]+fibonacci[i-2];
    while(~scanf("%d",&n))
    {
    if(n<=20)
    {
    printf("%d
    ",fibonacci[n]);
    continue;
    }
    sum=-0.5*log(5.0)/log(10.0)+((double)n)*log(f)/log(10.0);
    sum=sum-floor(sum);
    sum=pow(10.0,sum);
    while(sum<1000)sum=sum*10.0;
    printf("%d
    ",(int)sum);
    }
    return 0;
    }
  • 相关阅读:
    day003|python基础回顾3
    14Linux之网络管理
    13Linux之磁盘管理
    12Linux之进程管理
    11Linux之软件包管理
    10Linux之用户权限管理
    09Linux之文件管理
    08Linux之目录结构
    07Linux之bash解释器交互式环境特性
    06Linux之shell介绍
  • 原文地址:https://www.cnblogs.com/lxl0928/p/3862136.html
Copyright © 2011-2022 走看看