zoukankan      html  css  js  c++  java
  • HDU 1568

    给定n,0 <= n <= 100000000,斐波那契数列的第n项的前四位(不足则全部输出)

    利用不动点去解得斐波那契数列的公式,显然数据爆longlong,所以以10为底取对数即可

    前20项不足10000,预处理会更方便

     1 #include <cmath>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <algorithm>
     5 #include <queue>
     6 #include <vector>
     7 #define max(x, y) (x > y ? x : y)
     8 #define min(x, y) (x > y ? y : x)
     9 #define INF 0x3f3f3f3f
    10 #define mod 1000000007
    11 #define Yes printf("Yes
    ")
    12 #define No printf("No
    ")
    13 using namespace std;
    14 typedef long long LL;
    15 typedef pair<int, int> PII;
    16 
    17 int n;
    18 
    19 const int maxn = 30;
    20 
    21 int f[maxn] = {0, 1, 1};
    22 
    23 int main(int argc, const char * argv[]) {
    24     for (int i = 3; i <= 20; i++) {
    25         f[i] = f[i - 1] + f[i - 2];
    26     }
    27     //printf("%d
    ", f[20]);
    28     while (~scanf("%d", &n)) {
    29         if (n <= 20) {
    30             printf("%d
    ", f[n]);
    31         } else {
    32             double tmp = -0.5 * log(5.0) / log(10.0) + ((double)n) * log((sqrt(5.0)+1.0)/2.0) / log(10.0);
    33             tmp -= floor(tmp);
    34             tmp = pow(10.0, tmp);
    35             while (tmp < 1000) tmp *= 10;
    36             printf("%d
    ", (int)(tmp));
    37         }
    38     }
    39     return 0;
    40 }
  • 相关阅读:
    2019年CSP-J初赛试题(普及组)试题详解
    开放课件
    猴子选大王 (约瑟夫问题)
    后缀表达式转中缀表达式
    JDBC的使用
    JDBC
    MySQL第五天
    MySQL第四天
    MySQL第三天
    MySQL第二天
  • 原文地址:https://www.cnblogs.com/xFANx/p/7258046.html
Copyright © 2011-2022 走看看