-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprojectEuler025.cpp
More file actions
73 lines (56 loc) · 1.24 KB
/
Copy pathprojectEuler025.cpp
File metadata and controls
73 lines (56 loc) · 1.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/* Problem 25
1000-digit Fibonacci Number
The Fibonacci sequence is defined by the recurrence relation:
Fn = Fn−1 + Fn−2, where F1 = 1 and F2 = 1.
Hence the first 12 terms will be:
F1 = 1
F2 = 1
F3 = 2
F4 = 3
F5 = 5
F6 = 8
F7 = 13
F8 = 21
F9 = 34
F10 = 55
F11 = 89
F12 = 144
The 12th term, F12, is the first term to contain three digits.
What is the index of the first term in the Fibonacci sequence
to contain 1000 digits?
*/
#include <iostream>
#include <string>
using namespace std;
int nextFibonacciTerm (int f1, int f2) {
return f1 + f2;
}
int main () {
int f1 [1000] = { };
int f2 [1000] = { };
int fn [1000] = { };
int n = 0;
f1 [999] = 1;
f2 [999] = 1;
bool is1000digits = false;
while (!is1000digits) {
n++;
for (int i = 999; i >= 0; i--) {
f1 [i] = f2 [i];
f2 [i] = fn [i];
fn [i] = nextFibonacciTerm (f1 [i], f2 [i]);
}
// Shift the columns to account for 2-digit entries.
for (int i = 999; i > 0; i--) {
if (fn [i] > 9) {
string str = to_string (fn [i]);
fn [i] = int (str [1]) - 48;
fn [i - 1] += int (str [0]) - 48;
}
}
if (fn [0] != 0) {
is1000digits = true;
}
}
cout << n << endl;
}