问题标题: 酷町堂:3022 斐波那契数列

0
0
已解决
张恩泽
张恩泽
高级天翼
高级天翼

3022   斐波那契数列 经验值:2000

题目描述 Description

给出斐波那契数列的递推公式:

f(1) = 1

f(2) = 1

f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数)

请你求出 f(n) mod 1000000007 的值。

输入描述 Input Description

第 1 行:一个整数 n

输出描述 Output Description

第 1 行: f(n) mod 1000000007 的值

样例输入 Sample Input

输入样例#1: 5 输入样例#2: 10

样例输出 Sample Output

输出样例#1: 5 输出样例#2: 55

数据范围及提示 Data Size & Hint

对于 60% 的数据: n ≤ 92

对于 100% 的数据: n在long long(INT64)范围内。

 

 

 

    //CODE
    //#pragma GCC optimize(3)
    //#include <bits/stdc++.h>
    #include <iostream>
    #include <cstdio>
    #include <string>
    #include <cstring>
    using namespace std;
    string x, string y;
    int a[1000], b[1000], c[2000];
    string fib[100];
    long long n;
    string Plus (string x, string y) {
        memset (a, 0, sizeof (a));
        memset (b, 0, sizeof (b));
        memset (c, 0, sizeof (c));
        a[0] = x.size();
        for (int i = 1; i <= a[0]; i ++) {
            a[i] = x[a[0] - i] - '0';
        }
        b[0] = y.size();
        for (int i = 1; i <= b[0]; i ++) {
            b[i] = y[b[0] - i] - '0'
        }
        c[0] = max(a[0], b[0]);
        int jw = 0;
        for (int i = 1; i <= c[0]; i ++) {
            c[i] = a[i] + b[i] + jw;
            jw = c[i] / 10;
            c[i] %= 10;
        }
        if (jw != 0) {
            c[c[0]] = jw;
        }
        string ans = "";
        for (int i = c[0]; i >= 1; i ++) {
            ans += char(c[i] + '0');
        }
        return ans;
    } 
    int main() {
    //  freopen ("题目名.in", "r", stdin);
    //  freopen ("题目名.out", "w", stdout);
        fib[1] = "1";
        fib[2] = "2";
        cin >> n;
        for (int i = 3; i <= n; i ++) {
            fib[i] = Plus(fib[i - 1] + fib[i - 2]);
        }
        cout << fib[n];
    //  fclose (stdin);
    //  fclose (stdout);
        return 0;//好习惯!
    }

求各位大佬找错,30分


0
已采纳
张岳恒
张岳恒
资深光能
资深光能

fib[2]是等于“1”的

张岳恒在2020-10-20 17:47:43追加了内容

还有调用Plus函数为什么不用逗号隔开

张岳恒在2020-10-20 17:48:35追加了内容
 fib[i] = Plus(fib[i - 1] , fib[i - 2]);

才对叭?

我要回答