HDU1715 大菲波数

问题链接HDU1715 大菲波数

问题简述:参见上述链接。

问题分析:大数问题。为了避免重复计算,需要打表。

程序说明:(略)。

AC的C++语言程序如下:

/* HDU1715 大菲波数 */

#include <iostream>
#include <string>

using namespace std;

const int MAXN = 1000;
string s[MAXN+1];

void maketable(int n)
{
    string a, b;

    s[1] = "1";
    s[2] = "1";

    for(int i=3; i<=n; i++) {
        a = "00" + s[i-2];
        b = "0" + s[i-1];

        int val, carry=0;
        for(int j=(int)a.length()-1, k=(int)b.length()-1; k>=0; j--, k--) {
            val = (a[j] - '0') + (b[k] - '0') + carry;
            carry = val / 10;
            b[k] = val % 10 + '0';
        }

        if(b[0] == '0')
            b.erase(0, 1);

        s[i] = b;
    }
}

int main()
{
    int n, pi;

    maketable(MAXN);

    cin >> n;
    while(n--) {
        cin >> pi;

        cout << s[pi] << endl;
    }

    return 0;
}



posted on 2017-03-05 07:33  海岛Blog  阅读(114)  评论(0编辑  收藏  举报

导航