Problem Statement
- F[0] = 0
- F[1] = 1
- for each i >= 2: F[i] = F[i-1] + F[i-2]
You're given an
Return the smallest number of steps needed to change N into a Fibonacci number.
Definition
- Class:
- FibonacciDiv2
- Method:
- find
- Parameters:
- int
- Returns:
- int
- Method signature:
- int find(int N)
- (be sure your method is public)
Constraints
- N will be between 1 and 1,000,000, inclusive.
Examples
1
Returns: 0
The number 1 is already a Fibonacci number. No changes are necessary.
13
Returns: 0
The number 13 is also a Fibonacci number.
15
Returns: 2
The best way to change 15 into a Fibonacci number is to decrement it twice in a row (15 -> 14 -> 13).
19
Returns: 2
You can increase it by 2 to get 21.
1000000
Returns: 167960
This is the biggest possible number that you can get as input.
999999
Returns: 167959
514229
Returns: 0
673134
Returns: 158905
199
Returns: 34
100
Returns: 11
200
Returns: 33
300
Returns: 67
400
Returns: 23
500
Returns: 110
567876
Returns: 53647
257
Returns: 24
765
Returns: 155
9368
Returns: 1578
2615
Returns: 31
2
Returns: 0
27491
Returns: 1166
5
Returns: 0
7
Returns: 1
8
Returns: 0
12
Returns: 1
15
Returns: 2
16
Returns: 3
19
Returns: 2
18
Returns: 3
3417
Returns: 764
28
Returns: 6
34
Returns: 0
35
Returns: 1
1728
Returns: 131
2003
Returns: 406
142178
Returns: 20785
125784
Returns: 4391
59876
Returns: 13508
606259
Returns: 92030
165
Returns: 21
76856
Returns: 1831
24564
Returns: 4093
26377
Returns: 2280
290
Returns: 57
186312
Returns: 10106
3299
Returns: 715
707233
Returns: 124807
16181
Returns: 1530
536
Returns: 74
758092
Returns: 73948
190039
Returns: 6379
219
Returns: 14
18208
Returns: 497
874
Returns: 113
1281
Returns: 294
212428
Returns: 16010
29088
Returns: 431
165003
Returns: 31415
982
Returns: 5
507547
Returns: 6682
127
Returns: 17
320087
Returns: 2276
487803
Returns: 26426
183288
Returns: 13130
9
Returns: 1
4
Returns: 1