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 }