project-euler

https://projecteuler.net/
Log | Files | Refs | README

Euler_25.cpp (727B)


      1 #include "Euler.h"
      2 
      3 int Euler::ThousandDigitFibonacciNumber()
      4 {
      5     std::vector<int> fib1(1, 1);
      6     std::vector<int> fib2(1, 1);
      7 
      8     int count = 2;
      9 
     10     while (fib1.size() < 1e3)
     11     {
     12         for (unsigned i = 0; i < fib1.size(); ++i)
     13             fib1[i] += fib2[i];
     14 
     15         for (unsigned i = 0; i < fib1.size(); ++i)
     16         {
     17             if (fib1[i] >= 10)
     18             {
     19                 fib1[i] = fib1[i] % 10;
     20 
     21                 if (i == fib1.size() - 1)
     22                 {
     23                     fib1.push_back(1);
     24                     fib2.push_back(0);
     25                 }
     26                 else
     27                     fib1[i + 1] += 1;
     28             }
     29         }
     30 
     31         fib1.swap(fib2);
     32 
     33         ++count;
     34     }
     35 
     36     return count;
     37 }