Problem Statement
Waving has been playing against his wife, Esther, who has added a new rule to the game called 'bouncing'. This rule comes into action when a player whose position is on the last cells of the board gets a dice value that is larger than necessary to reach the n-th cell. In that case, instead of winning the game, the player will bounce back to the previous cells.
Formally, if a is the current cell number in which the player's checker is located and b is the result of the dice throw then the following rules are used:
- If a + b is less than n, the player moves the checker to cell (a + b).
- If a + b is exactly n, the player moves the checker to cell n and hence wins the game.
- If a + b is higher than n, the player moves the checker to cell (n - (a + b - n)).
Archibald has been wondering how does this rule affect the odds of winning the game at different states. You are given the number of cells n, the number of faces in the dice d, the cell on which Archibald's checker is currently located x and the cell on which Esther's checker is located y. Archibald is the next player to move. Return the probability of Archibald winning the game.
Definition
- Class:
- BouncingDiceGame
- Method:
- winProbability
- Parameters:
- int, int, int, int
- Returns:
- double
- Method signature:
- double winProbability(int n, int d, int x, int y)
- (be sure your method is public)
Notes
- The returned value must have an absolute or relative error less than 1e-9.
Constraints
- n will be between 10 and 5000, inclusive.
- d, x and y will be between 1 and n-1, inclusive.
Examples
10
6
1
1
Returns: 0.5417251215862328
10
2
1
1
Returns: 0.6090494791666666
With a two faces dice, the bouncing aspect of the game has less of an effect and thus the probability for the first player to win is larger.
100
20
1
10
Returns: 0.49158887163174947
10
5
9
1
Returns: 0.6943018666666667
Even though Waving is one cell away from the goal cell, the probability is still far from 100% due to the bouncing rule.
4999
4998
325
4807
Returns: 0.5000500250125236
10
3
8
7
Returns: 0.5999999999999999
4282
1
1789
236
Returns: 1.0
50
3
11
11
Returns: 0.5534074929395681
517
59
86
36
Returns: 0.5177366722994075
111
108
105
4
Returns: 0.5023255813953483
4963
11
4957
21
Returns: 1.0
5000
4946
4604
35
Returns: 0.5001520010016038
3794
131
3793
3467
Returns: 0.5155135592904747
4998
20
8
145
Returns: 0.32619040687013406
617
590
497
585
Returns: 0.5004240882103497
4998
4718
4997
4957
Returns: 0.5000529941706561
11
1
10
10
Returns: 1.0
169
157
1
168
Returns: 0.49819449910426367
4976
240
67
4975
Returns: 0.4250742567378541
4987
5
4925
179
Returns: 1.0
4532
4479
1339
4524
Returns: 0.5000558222619513
900
899
897
132
Returns: 0.5002782415136304
31
1
2
2
Returns: 1.0
20
3
10
19
Returns: 0.13247604155494236
10
9
7
1
Returns: 0.5294117647058822
4997
4983
4990
4996
Returns: 0.5000501756146678
4979
4970
4974
76
Returns: 0.5000503068719387
953
950
1
20
Returns: 0.4997361498032994
29
23
27
27
Returns: 0.511111111111111
105
24
101
5
Returns: 0.631261340609021
369
368
15
337
Returns: 0.5006802721088466
2376
1
31
1
Returns: 1.0
850
848
849
5
Returns: 0.5002949852507383
13
11
12
6
Returns: 0.5238095238095238
4999
4895
4363
2
Returns: 0.500155340957824
10
9
3
1
Returns: 0.5294117647058822
10
9
1
9
Returns: 0.5294117647058822
4985
336
1
21
Returns: 0.5005625236630795
10
9
9
9
Returns: 0.5294117647058822
4079
251
13
315
Returns: 0.4962681084618545
4575
111
55
489
Returns: 0.46905069387567805
4979
80
3
3032
Returns: 0.1972416404285994
44
5
2
1
Returns: 0.5636737003261998
31
5
20
8
Returns: 0.8075156567437585
4904
950
620
4601
Returns: 0.4962355553861488
4999
106
4980
2665
Returns: 0.6665359227736856
4628
3781
4621
25
Returns: 0.5002304034336426
1866
1666
386
40
Returns: 0.5004801519161933
4411
4226
2647
16
Returns: 0.5001822617162464
4999
1
4980
94
Returns: 1.0
15
1
5
2
Returns: 1.0
4931
3
1165
4699
Returns: 1.225151568652548E-14
4994
4903
5
31
Returns: 0.5000504453664149
4904
4785
6
14
Returns: 0.5000520729072441
192
188
189
37
Returns: 0.5013333333333325
4246
6
1828
4235
Returns: 8.74512912905229E-15
10
4
9
5
Returns: 0.6785714285714286
11
10
9
1
Returns: 0.5263157894736842
20
1
15
3
Returns: 1.0
4972
4652
4967
383
Returns: 0.5000537461034041
961
3
2
555
Returns: 1.2884196631311012E-14
4994
75
24
7
Returns: 0.5057787515141474
5000
30
2324
4968
Returns: 0.0016296755583416565
23
14
22
22
Returns: 0.5185185185185186
4992
36
2081
12
Returns: 0.9777404449855197
857
853
1
768
Returns: 0.49970537050539676
151
1
21
2
Returns: 1.0
4951
4950
4931
2
Returns: 0.5000505101525353
4989
4860
12
4913
Returns: 0.4999460697708039
4217
3794
55
4216
Returns: 0.4999207166671611
256
251
226
253
Returns: 0.5009980039920157
4979
1
4955
4943
Returns: 1.0
4997
4984
118
4342
Returns: 0.5000501655463115
4995
4989
4912
1
Returns: 0.5001504060582014
89
88
1
60
Returns: 0.5028571428571434
233
6
181
232
Returns: 0.0479564522094032
4996
4876
11
4641
Returns: 0.4999464270890712
4158
4080
7
311
Returns: 0.49993659780959937
579
24
39
1
Returns: 0.5630317873723575
4979
42
3
4944
Returns: 0.0020182550913785775
107
1
10
92
Returns: 0.0
56
7
55
1
Returns: 0.9303502709270725
16
15
14
15
Returns: 0.5172413793103449
12
2
2
1
Returns: 0.7275975545247395
4452
4241
4430
12
Returns: 0.500182470197911
4993
14
3
4992
Returns: 2.421043186110378E-14
78
3
1
12
Returns: 0.13879150174121613
12
11
2
1
Returns: 0.5238095238095237
96
18
95
14
Returns: 0.6794711903037502
838
1
13
648
Returns: 0.0
1014
188
913
1000
Returns: 0.5013333333333323
4588
4585
11
4584
Returns: 0.5000545315737713
4999
4797
4953
30
Returns: 0.5001601232863107
983
969
468
981
Returns: 0.5002581311306173
4998
4275
4954
118
Returns: 0.5001931720843625
379
88
21
22
Returns: 0.5026793017175989
19
2
16
2
Returns: 0.9992806625862917
4945
2
96
4929
Returns: 3.0883696319750685E-15
3350
3324
198
319
Returns: 0.5000752219046236
4997
92
4967
4876
Returns: 0.5100242047150632
4998
158
4983
20
Returns: 0.6621142781770013
4136
1
12
873
Returns: 0.0
4722
4665
4662
4523
Returns: 0.5000535963125826
4943
4171
7
4485
Returns: 0.49991596464773047
5000
1
1
1
Returns: 1.0
5000
1
6
1023
Returns: 0.0
5000
4999
1
1
Returns: 0.5000500150045214
5000
4999
4987
3989
Returns: 0.500050015004498
5000
2
1
1
Returns: 0.5073113082435863
5000
2
6
1
Returns: 0.5558860062050883
5000
4998
1
1
Returns: 0.5000500250125232
5000
4998
4633
2
Returns: 0.5000500250125245
5000
7
1
1
Returns: 0.5075303452810015
5000
4
99
4996
Returns: 5.30291526129089E-15
5000
4995
1
1
Returns: 0.5000500550485313
5000
4995
39
4937
Returns: 0.5000500550605664
5000
11
1
1
Returns: 0.5078690102463322
5000
11
957
231
Returns: 0.9999703965761418
5000
4991
1
1
Returns: 0.5000500951527054
5000
4991
2
4923
Returns: 0.49994978433771564
5000
22
1
1
Returns: 0.5069627325671975
5000
17
4997
19
Returns: 0.999999999999999
5000
4971
1
1
Returns: 0.5000502966412351
5000
4969
210
4999
Returns: 0.5000503169970864
5000
62
1
1
Returns: 0.5035843381475031
5000
39
34
4906
Returns: 9.288889454447208E-4
5000
4964
1
1
Returns: 0.5000503675455915
5000
4964
4982
18
Returns: 0.5001514281604491
5000
79
1
1
Returns: 0.5029145622645638
5000
105
1
497
Returns: 0.460437033467684
5000
4915
1
1
Returns: 0.5000508695282901
5000
4914
150
4739
Returns: 0.5000508802279248
5000
253
1
1
Returns: 0.5009746851145893
5000
214
4999
3
Returns: 0.596193982024723
5000
4820
1
1
Returns: 0.500051871820614
5000
4746
4264
4999
Returns: 0.5000526814876965
5000
262
1
1
Returns: 0.5009419004907647
5000
349
4994
1
Returns: 0.538232158215041
5000
4725
1
1
Returns: 0.5000529143952079
5000
4654
10
4990
Returns: 0.49993826043859846
5000
927
1
1
Returns: 0.5002692640307708
5000
872
4
53
Returns: 0.5002219483141689
5000
4447
1
1
Returns: 0.5000562210510979
5000
4322
4195
388
Returns: 0.5001815204559087
5000
3641
1
1
Returns: 0.5000686602765231
5000
2801
4998
4999
Returns: 0.5000892697732565
4990
77
72
4947
Returns: 0.09883634771313736
4859
4714
1
7
Returns: 0.5000528994283812
5000
2000
100
1
Returns: 0.5001496698747883
4999
4997
1
3
Returns: 0.4999499649754471
5000
2000
1
231
Returns: 0.5000679445059347
5000
3126
4411
2222
Returns: 0.5000799872020449
5000
1000
4050
200
Returns: 0.5043613173564269
5000
2500
2
3
Returns: 0.5000997678547171
5000
2000
4900
1
Returns: 0.5010376579698138