Problem Statement
You are located at point (X, Y) and you want to get home to point (0, 0) as quickly as possible. There are two allowable methods of movement. The first method is walking, and you can walk at a speed of 1 unit per second. The second method is jumping, and you can jump D units in T seconds. You can jump in any straight direction, but you can only jump exactly D units. Return the minimum number of seconds required to get home using these two methods. You are not limited to using just one method for the entire trip; you can use any combination of walking and jumping.
Definition
- Class:
- ReturnToHome
- Method:
- goHome
- Parameters:
- int, int, int, int
- Returns:
- double
- Method signature:
- double goHome(int X, int Y, int D, int T)
- (be sure your method is public)
Notes
- Your return value must have an absolute or relative error less than 1e-9.
Constraints
- X will be between 1 and 1000, inclusive.
- Y will be between 1 and 1000, inclusive.
- D will be between 1 and 10000, inclusive.
- T will be between 1 and 10000, inclusive.
Examples
6
8
5
3
Returns: 6.0
The fastest way to get home is by using two jumps.
3
4
6
3
Returns: 4.0
You should jump one unit past your destination and then walk back.
400
300
150
10
Returns: 40.0
You should get home using four jumps.
318
445
1200
800
Returns: 546.9451526432975
The fastest way is to walk.
387
717
413
192
Returns: 384.0
587
628
361
205
Returns: 547.6237549067615
165
555
489
216
Returns: 306.0077719685635
408
211
495
99
Returns: 134.6689646888641
224
494
430
87
Returns: 174.0
564
468
425
86
Returns: 172.0
617
616
294
240
Returns: 720.0
651
426
333
218
Returns: 547.9955012723402
520
301
369
81
Returns: 162.0
31
563
106
142
Returns: 563.8528176749674
965
827
138
145
Returns: 1270.8870917591382
910
193
180
252
Returns: 930.2413665280641
369
469
224
44
Returns: 132.0
108
401
136
219
Returns: 415.2890559598218
259
294
402
277
Returns: 287.1875448636172
420
303
486
82
Returns: 113.88898424276215
917
420
19
10
Returns: 531.607455851879
635
256
73
294
Returns: 684.6612300985065
634
50
274
134
Returns: 355.96855268165575
531
134
429
288
Returns: 406.64678397667967
114
460
5770
9416
Returns: 473.91560430101896
633
51
4686
9670
Returns: 635.0511790399258
21
556
5415
9995
Returns: 556.3964413976782
600
61
7785
4824
Returns: 603.0928618380423
283
235
8780
4465
Returns: 367.85051311640166
898
958
3010
7780
Returns: 1313.0757784682496
617
831
5699
4165
Returns: 1035.0120772242226
881
817
3156
8756
Returns: 1201.5198708302746
413
675
6107
2132
Returns: 791.3242066308852
387
896
2444
6982
Returns: 976.0046106448473
738
226
760
391
Returns: 402.8289966048179
408
250
1776
74
Returns: 148.0
19
481
1387
744
Returns: 481.375113606842
56
484
1045
531
Returns: 487.22889897870385
398
153
764
876
Returns: 426.39535644751106
834
355
270
307
Returns: 906.4110546545645
465
867
1672
5
Returns: 10.0
953
676
120
952
Returns: 1168.4113145634974
224
509
1035
63
Returns: 126.0
74
137
1806
533
Returns: 155.7080601638849
38
86
4
7
Returns: 94.02127418834527
434
375
6
7
Returns: 573.5686532578293
922
391
14
3
Returns: 216.0
44
625
16
1
Returns: 40.0
565
172
10
7
Returns: 413.60054182162753
628
147
9
5
Returns: 360.0
148
919
16
1
Returns: 59.0
981
955
7
1
Returns: 196.0
163
119
1
10
Returns: 201.81674856165927
563
388
18
3
Returns: 114.0
249
645
833
52
Returns: 104.0
557
445
550
79
Returns: 158.0
611
174
763
50
Returns: 100.0
572
149
416
98
Returns: 196.0
855
96
209
77
Returns: 332.3725937057735
897
604
822
95
Returns: 190.0
881
487
993
69
Returns: 82.64293570262544
922
214
130
48
Returns: 372.50937660437364
853
871
452
85
Returns: 255.0
660
584
809
3
Returns: 6.0
695
958
865
17
Returns: 34.0
977
6
368
43
Returns: 129.0
858
461
388
54
Returns: 162.0
822
578
169
75
Returns: 450.0
692
554
519
100
Returns: 200.0
351
210
624
17
Returns: 34.0
327
568
31
1
Returns: 22.0
384
778
396
57
Returns: 171.0
425
132
384
51
Returns: 102.0
813
101
421
64
Returns: 128.0
10
10
10000
7
Returns: 14.0
10
10
10000
8
Returns: 14.142135623730951
6
8
3
2
Returns: 7.0
Make three jumps and then walk the remaining 1 unit.
10
10
1000
5
Returns: 10.0
6
8
2
5
Returns: 10.0
10
10
1000
5
Returns: 10.0
100
120
1
11
Returns: 156.20499351813308
100
100
1
100
Returns: 141.4213562373095
10
1
11
3
Returns: 3.95012437887911
1000
1000
10000
10000
Returns: 1414.213562373095
1
6
6
9
Returns: 6.082762530298219
1000
1000
2
5000
Returns: 1414.213562373095
3
4
5
100
Returns: 5.0
1
10
10
4
Returns: 4.04987562112089
7
7
5
3
Returns: 6.0
3
4
10
1
Returns: 2.0
1000
1000
2
3
Returns: 1414.213562373095
30
40
20
1
Returns: 3.0
6
8
20
10
Returns: 10.0
898
1
300
200
Returns: 600.0
1
1
2
1
Returns: 1.4142135623730951
663
645
10000
3
Returns: 6.0
401
300
150
10
Returns: 40.0
400
300
150
10
Returns: 40.0
16
12
3
1
Returns: 7.0
800
600
1
999
Returns: 1000.0
5
4
1
2
Returns: 6.4031242374328485
3
4
6
3
Returns: 4.0
55
689
465
223
Returns: 446.0
318
445
1200
800
Returns: 546.9451526432975
1
1000
1
10000
Returns: 1000.000499999875
1
1
1
1000
Returns: 1.4142135623730951
10
10
1000
2
Returns: 4.0
3
4
5
3
Returns: 3.0
1
1
10
10000
Returns: 1.4142135623730951
3
4
3
1
Returns: 2.0
3
4
7
1
Returns: 2.0
1000
1000
1
100
Returns: 1414.213562373095
10
10
12
1
Returns: 2.0
30
40
25
40
Returns: 50.0
99
99
1000
4
Returns: 8.0
1000
1000
93
91
Returns: 1384.213562373095
2
2
5
2
Returns: 2.8284271247461903
1
1
5000
499
Returns: 1.4142135623730951
1000
1000
1005
1
Returns: 2.0
6
8
1010
2
Returns: 4.0
3
3
2
3
Returns: 4.242640687119285
1
3
2
1
Returns: 2.0
10
10
1
5
Returns: 14.142135623730951
11
11
1000
5
Returns: 10.0
591
739
1890
1
Returns: 2.0
999
1000
7
3
Returns: 606.0
750
1
300
1
Returns: 3.0
500
1
240
13
Returns: 39.0
200
200
10
1000
Returns: 282.842712474619
5
5
5
1
Returns: 2.0
1
1
10
20
Returns: 1.4142135623730951
100
100
2
500
Returns: 141.4213562373095
900
900
901
901
Returns: 1272.7922061357856
2
2
100
1
Returns: 2.0
10
10
1000
4
Returns: 8.0
3
4
5
300
Returns: 5.0
30
40
5
300
Returns: 50.0
30
40
60
1
Returns: 2.0