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;
}
こんにちは、これはコメントです。
コメントの承認、編集、削除を始めるにはダッシュボードの「コメント画面」にアクセスしてください。
コメントのアバターは「Gravatar」から取得されます。