Problem Statement
You are given numbers A0, X, Y, M and n.
Generate a list A of length n according to the following recurrence relation:
A[0] = A0
A[i] = (A[i - 1] * X + Y) MOD M, for 0 < i < n
Return the minimal absolute difference between any two elements of A.
Definition
- Class:
- MinDifference
- Method:
- closestElements
- Parameters:
- int, int, int, int, int
- Returns:
- int
- Method signature:
- int closestElements(int A0, int X, int Y, int M, int n)
- (be sure your method is public)
Constraints
- A0, X, Y, M will each be between 1 and 10000, inclusive.
- n will be between 2 and 10000, inclusive.
Examples
3
7
1
101
5
Returns: 6
The elements of the list are {3, 22, 54, 76, 28}. The minimal difference is between elements 22 and 28.
3
9
8
32
8
Returns: 0
All elements are the same.
67
13
17
4003
23
Returns: 14
1
1221
3553
9889
11
Returns: 275
1
1
1
2
10000
Returns: 0
123
7655
651
6565
10000
Returns: 0
1
2
3
4
5
Returns: 0
872
765
876
876
786
Returns: 0
5432
4321
321
21
2
Returns: 5412
10
1
10
10000
20
Returns: 10
6661
4289
2621
337
3
Returns: 79
6571
5407
19
4903
8
Returns: 3
5791
1367
3613
2531
6
Returns: 155
4547
9767
8971
7057
5
Returns: 84
3391
6679
6379
7043
6
Returns: 35
6983
7541
7351
6793
30
Returns: 4
6761
2609
577
7547
75
Returns: 1
1319
5683
2287
8737
90
Returns: 2
1151
1619
1321
9437
61
Returns: 2
1567
5003
9661
8929
43
Returns: 14
7247
4547
2237
2411
903
Returns: 1
7757
3889
2657
251
765
Returns: 0
613
9227
3767
3559
611
Returns: 0
4231
9533
7681
3067
821
Returns: 1
7877
5623
2273
9413
344
Returns: 1
7547
8747
7547
8599
6410
Returns: 1
8821
1861
4943
6091
1177
Returns: 0
29
2063
5351
2143
7719
Returns: 0
919
6803
3593
683
5936
Returns: 0
7297
2693
5407
9859
8673
Returns: 0
8396
7408
1583
1483
6094
Returns: 0
7616
5264
1789
6911
9288
Returns: 0
6716
4543
5393
8941
2810
Returns: 0
9822
5989
9613
1861
7678
Returns: 0
2322
1076
2477
4451
5820
Returns: 0
8422
5091
8221
8377
315
Returns: 1
6262
7395
8167
5099
664
Returns: 1
5533
4896
3299
9547
523
Returns: 1
7455
3925
5483
1091
285
Returns: 0
8110
3852
281
8093
581
Returns: 1
8455
4271
1733
53
99
Returns: 0
2762
5752
67
5507
94
Returns: 1
4054
5336
8663
2341
44
Returns: 2
6996
9961
1549
3329
89
Returns: 1
1193
4821
8971
5399
95
Returns: 1
8481
1955
8389
6373
6
Returns: 44
1407
7883
5839
3727
3
Returns: 534
2871
5689
6367
2879
7
Returns: 49
1860
5129
8053
2477
4
Returns: 32
4213
7596
6217
9043
4
Returns: 93
8573
7998
8163
9929
85
Returns: 1
284
9496
5709
2789
22
Returns: 2
8729
6922
249
199
55
Returns: 0
8575
2369
3691
6469
59
Returns: 2
8935
5079
5965
7237
29
Returns: 35
8595
7701
2140
7109
721
Returns: 1
5003
8515
5218
3373
499
Returns: 1
7694
7230
1381
5881
57
Returns: 1
8870
3487
1596
761
909
Returns: 0
8615
6655
1021
5279
9043
Returns: 0
6806
7494
3142
3727
5126
Returns: 0
4594
555
3843
3359
968
Returns: 1
3497
9723
4549
9601
1180
Returns: 1
1
1
1
2
2
Returns: 1
1
1
1
2
3
Returns: 0
10000
2724
6398
1
2
Returns: 10000
9986
43
2778
8376
3
Returns: 4986
9905
2695
6990
9837
4
Returns: 3279
9795
1
2750
9657
8
Returns: 1343
8088
1569
9611
9605
16
Returns: 565
3827
7591
7802
9471
32
Returns: 287
9013
6513
6660
9472
64
Returns: 148
707
7181
531
9715
138
Returns: 67
6583
7421
3500
9695
268
Returns: 35
9263
3760
1579
9104
529
Returns: 16
965
3913
5928
9496
1154
Returns: 8
7083
4889
4508
9484
2102
Returns: 4
5777
6648
4577
8986
4458
Returns: 2
6945
1904
8230
8753
8595
Returns: 1
4765
5081
7951
10000
10000
Returns: 1
10000
10000
508
9999
10000
Returns: 1
1000
2
999
1000
3
Returns: 1
7
9
67
5
10000
Returns: 0
1
1
1
9999
8888
Returns: 1
555
10000
999
9999
10000
Returns: 0
99
2
3
100
2
Returns: 98
57
35
35
1
2
Returns: 57
10
10
10
100
2
Returns: 0
100
100
100
100
2
Returns: 100
1
9000
1
10000
2
Returns: 9000
1
1234
2
5555
2
Returns: 1235
1
1
1
100
2
Returns: 1
5
6
7
10
10
Returns: 0
3
7
1
101
2
Returns: 19
2
1
3
2
2
Returns: 1
575
5245
445
5646
10
Returns: 40
2
1
4
5
2
Returns: 1