zoukankan      html  css  js  c++  java
  • 【hdu 1715 大菲波数(水题、、罪过)】

    大菲波数

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 6572    Accepted Submission(s): 2157


    Problem Description
    Fibonacci数列,定义如下:
    f(1)=f(2)=1
    f(n)=f(n-1)+f(n-2) n>=3。
    计算第n项Fibonacci数值。
     
    Input
    输入第一行为一个整数N,接下来N行为整数Pi(1<=Pi<=1000)。
     
    Output
    输出为N行,每行为对应的f(Pi)。
     
    Sample Input
    5 1 2 3 4 5
     
    Sample Output
    1 1 2 3 5
     
    Source
     
    Recommend
    lcy
     
     
     
     
     1 #include <iostream>
     2 #include <stdio.h>
     3 using namespace std;
     4 
     5 #define MAXN 1010
     6 
     7 class Number
     8 {
     9 public:
    10     int* a;
    11     int  iTop;
    12     void setSize(int n);
    13     void setValueSum(Number, Number);
    14     void setTopValue();
    15     void showValue();
    16 };
    17 
    18 void Number::setSize(int n)
    19 {
    20     a = new int[n];
    21     for (int i = 0; i < n; i++)
    22     {
    23         a[i] = 0;
    24     }
    25     iTop = n - 1;
    26 }
    27 
    28 void Number::setValueSum(Number num1, Number num2)
    29 {
    30     for (int i = 0; i <= num2.iTop; i++)
    31     {
    32         a[i]  = num2.a[i];
    33     }
    34     for (int i = 0; i <= num1.iTop; i++)
    35     {
    36         a[i] += num1.a[i];
    37     }
    38     for (int i = 0; i <= iTop; i++)
    39     {
    40         a[i+1] += (a[i]/10);
    41         a[i]   %= 10;
    42     }
    43 }
    44 
    45 void Number::setTopValue()
    46 {
    47     while (a[iTop] == 0)
    48     {
    49         iTop--;
    50     }
    51 }
    52 
    53 void Number::showValue()
    54 {
    55     for (int i = iTop; i >= 0; i--)
    56     {
    57         printf("%d", a[i]);
    58     }
    59     printf("\n");
    60 }
    61 
    62 Number iMap[MAXN];
    63 
    64 void iMakeMap()
    65 {
    66     iMap[1].setSize(1);
    67     iMap[1].a[0] = 1;
    68     iMap[2].setSize(1);
    69     iMap[2].a[0] = 1;
    70 
    71     for (int i = 3; i < MAXN; i++)
    72     {
    73         iMap[i].setSize(iMap[i-1].iTop+2);
    74         iMap[i].setValueSum(iMap[i-1], iMap[i-2]);
    75         iMap[i].setTopValue();
    76     }
    77 }
    78 
    79 int main()
    80 {
    81     iMakeMap();
    82     int iT;
    83     scanf("%d", &iT);
    84     while (iT--)
    85     {
    86         int iIndex;
    87         scanf("%d", &iIndex);
    88         iMap[iIndex].showValue();
    89     }
    90     return 0;
    91 }
    92 
    93 // end
    94 // ism
  • 相关阅读:
    VIM下的可视模式的相关知识
    VIM下的插入模式的相关知识:
    VIM下的普通模式的相关知识
    VIM中一些按键的作用:
    大师源于勤奋
    在你放弃以前,问问自己这6个问题
    一键查看IE密码!IE PassView简易教程
    如何查看Chrome浏览器保存的账号密码
    如何查看Firefox中保存的登录密码
    谈谈360浏览器保存密码的差异
  • 原文地址:https://www.cnblogs.com/ismdeep/p/2621008.html
Copyright © 2011-2022 走看看