Cpp程序未提供输出

时间:2020-09-16 07:00:04

标签: c++

我正在创建一个脚本,该脚本计算前n个斐波纳契数的总和并返回总和的最后一位。 python脚本可以完美运行,但C ++脚本却不能,并且逻辑相同。

任何帮助将不胜感激。

Python代码

def calc_fib(n):

    f = [0, 1]
    for i in range(2, 61):
        f.insert(i, (f[i-1] + f[i-2]) % 10)
    rem = n % 60
    quotient =  (n - rem) / 60
    return int((sum(f) * quotient + sum(f[0: rem+1])) % 10)

n = int(input())
print(calc_fib(n))

C ++代码

#include <iostream>
#include <vector>
#include <numeric>
using namespace std;

long long fibonacci_sum_last_digit(long long n) {
    vector<int> f(n + 1);
    f[0] = 0;
    f[1] = 1;
    for (int i = 2; i <= 60; i++){
        f[i] = (f[i-1] + f[i-2]) % 10;
    }
    int rem = n % 60;
    int quotient = (n - rem) / 60;
    return (accumulate(f.begin(), f.end(), 0) * quotient + accumulate(f.begin(), f.begin() + rem + 1, 0)) % 10;
}

int main() {
    int n;
    cin >> n;
    if (n <= 1)
        cout << n;
    else
        cout << fibonacci_sum_last_digit(n) << '\n';
    return 0;
}

1 个答案:

答案 0 :(得分:4)

vector<int> f(n + 1);
f[0] = 0;
f[1] = 1;
for (int i = 2; i <= 60; i++){
    f[i] = (f[i-1] + f[i-2]) % 10;
}

向量的大小为n+1,您可以访问直到60 =>这是一个错误

这应该解决:

vector<int> f(60 + 1);

vector<int> f; 
f.push_back(0);
f.push_back(1);
for (int i = 2; i <= 60; i++){
    f.push_back((f[i-1] + f[i-2]) % 10);
}