zoukankan      html  css  js  c++  java
  • CodeChef A

    问题是求出斐波那契数列的第n个,这里要用大数加法预处理,然后就可以了

    代码:

     1 #include <iostream>
     2 #include <sstream>
     3 #include <cstdio>
     4 #include <climits>
     5 #include <cstring>
     6 #include <cstdlib>
     7 #include <string>
     8 #include <stack>
     9 #include <map>
    10 #include <cmath>
    11 #include <vector>
    12 #include <queue>
    13 #include <algorithm>
    14 #define esp 1e-6
    15 #define pi acos(-1.0)
    16 #define pb push_back
    17 #define lson l, m, rt<<1
    18 #define rson m+1, r, rt<<1|1
    19 #define mp(a, b) make_pair((a), (b))
    20 #define in  freopen("in.txt", "r", stdin);
    21 #define out freopen("out.txt", "w", stdout);
    22 #define print(a) printf("%d
    ",(a));
    23 #define bug puts("********))))))");
    24 #define stop  system("pause");
    25 #define Rep(i, c) for(__typeof(c.end()) i = c.begin(); i != c.end(); i++)
    26 #define inf 0x0f0f0f0f
    27 
    28 using namespace std;
    29 typedef long long  LL;
    30 typedef vector<int> VI;
    31 typedef pair<int, int> pii;
    32 typedef vector<pii> VII;
    33 typedef vector<pii, int> VIII;
    34 typedef VI:: iterator IT;
    35 struct BigInt
    36 {
    37     int len;
    38     int f[1100];
    39     void Init(int n)
    40     {
    41         memset(f, 0, sizeof(f));
    42         len = 0;
    43         while(n)
    44         {
    45             f[len] = n % 10;
    46             n /= 10;
    47             len++;
    48         }
    49 
    50         if(len > 0)
    51         len--;
    52     }
    53     BigInt operator + (const BigInt &a)const
    54     {
    55         int carry = 0;
    56         BigInt c;
    57         c.Init(0);
    58        int i;
    59         for(i = 0; i <= max(a.len, len); i++)
    60         {
    61             carry = carry + f[i] + a.f[i];
    62             c.f[i] = carry%10;
    63             carry /= 10;
    64         }
    65         if(carry == 0)
    66             return         c.len = i - 1, c;
    67         while(carry)
    68         {
    69             c.f[i] = carry%10;
    70             carry /= 10;
    71             i++;
    72         }
    73         c.len = i-1;
    74         return c;
    75     }
    76 };
    77 
    78 BigInt fi[11000];
    79 int main(void)
    80 {
    81     fi[1].Init(1);
    82     fi[2].Init(1);
    83     for(int i = 3; i <= 2000; i++)
    84         fi[i] = fi[i-2] + fi[i-1];
    85     int t;
    86     while(scanf("%d", &t), t)
    87     {
    88         for(int i = fi[t].len; i >= 0; i--)
    89             printf("%d", fi[t].f[i]);
    90         puts("");
    91     }
    92     return 0;
    93 }
    View Code

  • 相关阅读:
    Git 分支管理
    Kubernetes 中文文档
    Docker 命令大全
    Redis 常用命令 大全
    Docker 资源汇总
    Docker 安装 Redis
    JavaScript闭包
    CSS选择器
    JavaScript类型转换
    javascript字符串处理方法
  • 原文地址:https://www.cnblogs.com/rootial/p/3379741.html
Copyright © 2011-2022 走看看