Problem Statement
- F1 = 1
- F2 = 1
- Fi = Fi-1 + Fi-2 for each i > 2
We'll define the fibonacci position of an integer greater than or equal to 1 as follows:
- The fibonacci position of 1 is 2 (since F2 = 1)
- The fibonacci position of any integer n > 1 such that Fi = n is i
- The fibonacci position of any integer n > 1 such that it is strictly between Fi and Fi+1 is i+(n-Fi)/(Fi+1-Fi) (informally, this means it is linearly distributed between Fi and Fi+1)
FP(1)=2 (first rule)
FP(5)=5 (second rule F5 = 5)
FP(4)=4.5 (third rule, is right in the middle of F4 = 3 and F5 = 5)
Given an integer n, return its fibonacci position as a
Definition
- Class:
- FibonacciPositioning
- Method:
- getFPosition
- Parameters:
- int
- Returns:
- double
- Method signature:
- double getFPosition(int n)
- (be sure your method is public)
Notes
- The returned value must be accurate to 1e-9 relative or absolute.
Constraints
- n will be between 1 and 100000000 (108), inclusive.
Examples
1
Returns: 2.0
2
Returns: 3.0
3
Returns: 4.0
5
Returns: 5.0
4
Returns: 4.5
Examples from the problem statement.
6
Returns: 5.333333333333333
21
Returns: 8.0
22
Returns: 8.076923076923077
23
Returns: 8.153846153846153
100000000
Returns: 39.94028487238683
99999999
Returns: 39.94028484680364
99999998
Returns: 39.94028482122046
90000009
Returns: 39.68445321652186
10
Returns: 6.4
100
Returns: 11.2
1000
Returns: 16.021311475409835
10000
Returns: 20.77373834011002
100000
Returns: 25.538625776397517
1000000
Returns: 30.32662490835795
10000000
Returns: 35.13546384489119
34
Returns: 9.0
55
Returns: 10.0
144
Returns: 12.0
233
Returns: 13.0
377
Returns: 14.0
610
Returns: 15.0
987
Returns: 16.0
63245986
Returns: 39.0
39088169
Returns: 38.0
24157817
Returns: 37.0
14930352
Returns: 36.0
9227465
Returns: 35.0
5702887
Returns: 34.0
3524578
Returns: 33.0
3524579
Returns: 33.00000045907169
3524577
Returns: 32.9999992572064
63245987
Returns: 39.00000002558319
63245985
Returns: 38.99999995860553
31622993
Returns: 37.5
31622994
Returns: 37.500000066977655
31622992
Returns: 37.499999933022345
9
Returns: 6.2
99
Returns: 11.181818181818182
999
Returns: 16.01967213114754
9999
Returns: 20.773499162879695
99999
Returns: 25.53860420979986
9999999
Returns: 35.13546366954141
999999
Returns: 30.32662296369905
11
Returns: 6.6
111
Returns: 11.4
1111
Returns: 16.20327868852459
11111
Returns: 21.024390243902438
111111
Returns: 25.778252242926158
1111111
Returns: 30.542697903074313
7
Returns: 5.666666666666667
8
Returns: 6.0
9
Returns: 6.2
10
Returns: 6.4
12
Returns: 6.8
13
Returns: 7.0
14
Returns: 7.125
15
Returns: 7.25
16
Returns: 7.375
17
Returns: 7.5
18
Returns: 7.625
19
Returns: 7.75
20
Returns: 7.875
53532
Returns: 24.249991276127997
60696
Returns: 24.499982552255993
67860
Returns: 24.74997382838399
86617
Returns: 25.25
98209
Returns: 25.5
109801
Returns: 25.75
140149
Returns: 26.249996667777406
158905
Returns: 26.499993335554816
177661
Returns: 26.749990003332222
226766
Returns: 27.24999794057318
257114
Returns: 27.499995881146358
287462
Returns: 27.74999382171954
366915
Returns: 28.249997454408454
416020
Returns: 28.5
465124
Returns: 28.749997454408454
593681
Returns: 29.249997640106855
673134
Returns: 29.499998426737903
752587
Returns: 29.74999921336895
960597
Returns: 30.249999513835277
1089154
Returns: 30.49999902767055
1217711
Returns: 30.74999854150583
1554279
Returns: 31.25
1762289
Returns: 31.5
1970299
Returns: 31.75
2514876
Returns: 32.2499998143016
2851443
Returns: 32.4999996286032
3188010
Returns: 32.7499994429048
4069155
Returns: 33.24999988523208
4613732
Returns: 33.49999977046415
5158309
Returns: 33.74999965569623
6584031
Returns: 34.24999985813905
7465176
Returns: 34.5
8346320
Returns: 34.74999985813905
10653186
Returns: 35.24999986848766
12078908
Returns: 35.49999991232511
13504630
Returns: 35.749999956162554
17237218
Returns: 36.24999997290697
19544084
Returns: 36.49999994581394
21850950
Returns: 36.7499999187209
27890405
Returns: 37.25
31622993
Returns: 37.5
35355581
Returns: 37.75
45127623
Returns: 38.249999989651386
51167077
Returns: 38.499999979302764
57206531
Returns: 38.74999996895415
100000000
Returns: 39.94028487238683
100
Returns: 11.2
1
Returns: 2.0
2
Returns: 3.0
10000000
Returns: 35.13546384489119
21345341
Returns: 36.695205996446475
13
Returns: 7.0
2584
Returns: 18.0
3
Returns: 4.0
4
Returns: 4.5
21
Returns: 8.0