Hello world!

WordPress へようこそ。こちらは最初の投稿です。編集または削除し、コンテンツ作成を始めてください。

WordPress へようこそ。こちらは最初の投稿です。編集または削除し、コンテンツ作成を始めてください。

#include <iostream>
#include <vector>
#include <cmath>

namespace
{
    std::vector<unsigned long> CreateFibonacciSequence(const unsigned long &num_request_terms)
    {
        const unsigned long first_value  = 1;
        const unsigned long second_value = 1;
        std::vector<unsigned long> fibonacci_sequence;
        fibonacci_sequence.push_back(first_value);
        fibonacci_sequence.push_back(second_value);
        for (unsigned long i_term = 2; i_term < num_request_terms; i_term++)
        {
            fibonacci_sequence.push_back(fibonacci_sequence[i_term - 2]
                                         + fibonacci_sequence[i_term - 1]);
        }
        return fibonacci_sequence;
    }

    unsigned long CreateNthTermOfFibonacciSequence(const unsigned long &num_request_terms)
    {
        const double sqrt5 = std::sqrt(5.0e0);
        const double n     = static_cast<double>(num_request_terms);
        const double value =
            (std::pow((1.0e0 + sqrt5) * 0.5e0, n) - std::pow((1.0e0 - sqrt5) * 0.5e0, n)) / sqrt5;
        return static_cast<unsigned long>(std::lround(value));
    }

}

int main (void)
{
    constexpr unsigned long maximum_value = 4000000;
    unsigned long maximum_term            = 0;
    // find maximum term
    while (true)
    {
        if (CreateNthTermOfFibonacciSequence(maximum_term + 1) > maximum_value)
            break;
        maximum_term++;
    }

    std::vector<unsigned long> fibonacci_sequence;
    {  // the first term should be stashed.
        fibonacci_sequence = CreateFibonacciSequence(maximum_term);
        fibonacci_sequence.erase(fibonacci_sequence.begin());
    }

    unsigned long answer = 0;
    {
        for (const auto &term : fibonacci_sequence)
        {
            if (term % 2 == 0)
            {
                answer += term;
            }
        }  // for term
    }
    std::cout << "Answer is " << answer << std::endl;
    return 0;
}