Problem Statement
Manao can perform two types of moves. The first is choosing a prime number p which divides N and dividing the sequence of the slots in p contiguous subsequences, namely the slots from 1 to N/p, the slots from N/p+1 to 2N/p, etc. Then, Manao keeps the subsequence which contains the desired object and gets rid of the remaining slots. The length of the chosen subsequence is then assigned to N and the slots in it are renumbered from 1 to the new value of N.
The second type of move is shifting the objects in the slots. Manao can perform a left shift and a right shift. After a left shift, for each i > 1 the object in slot i is moved to slot i-1 and the object in slot 1 is moved to the last slot of the sequence. After a right shift, each object is moved to the slot to the right and the object in the last slot is moved to slot 1.
Determine the least number of moves in which Manao can reach the goal. Taking the object from slot 1 is not considered a move.
Definition
- Class:
- DivideAndShift
- Method:
- getLeast
- Parameters:
- int, int
- Returns:
- int
- Method signature:
- int getLeast(int N, int M)
- (be sure your method is public)
Notes
- A positive integer number is called prime if it has exactly two divisors - 1 and itself. For example, 2, 3, 5 and 7 are prime numbers, and 4, 6, 8 and 9 are not prime. By convention, 1 is not considered to be a prime number.
- A prime number p divides N if the ratio N/p is an integer.
Constraints
- N will be between 1 and 1,000,000, inclusive.
- M will be between 1 and N, inclusive.
Examples
56
14
Returns: 3
One possible way to obtain the object in slot 14 is to perform the following operations: 1. Divide by 2. N becomes equal to 28 now. 2. Shift right. The object moves to slot 15. 3. Divide by 2 again. The sequence 15..28 is kept, renumbered as 1..14 and the object appears in slot 1.
49
5
Returns: 2
Manao divides by 7 twice and gets a single slot.
256
7
Returns: 6
Shift left until the object is in slot 1.
1
1
Returns: 0
7
3
Returns: 1
6
1
Returns: 0
The object may be in slot 1 right in the beginning.
93
13
Returns: 1
256
255
Returns: 2
1000000
1234
Returns: 9
123456
12347
Returns: 7
999999
215
Returns: 6
999999
234625
Returns: 5
3
2
Returns: 1
2
2
Returns: 1
4
3
Returns: 1
5
3
Returns: 1
8
6
Returns: 2
9
6
Returns: 2
12
11
Returns: 2
14
8
Returns: 1
15
9
Returns: 2
16
11
Returns: 3
16
12
Returns: 3
27
23
Returns: 3
32
11
Returns: 4
32
12
Returns: 4
32
16
Returns: 2
35
29
Returns: 1
100
58
Returns: 3
108
6
Returns: 4
512
13
Returns: 7
4096
666
Returns: 10
5096
776
Returns: 4
10000
6123
Returns: 6
6144
20
Returns: 11
6144
63
Returns: 8
8192
4110
Returns: 12
19999
521
Returns: 2
19945
229
Returns: 2
25998
15633
Returns: 3
59049
12157
Returns: 9
59049
57851
Returns: 10
59049
59045
Returns: 5
524288
55022
Returns: 18
524288
625
Returns: 15
200000
47237
Returns: 9
173734
58450
Returns: 4
360216
6327
Returns: 5
360216
284234
Returns: 3
1000000
1
Returns: 0
1000000
999999
Returns: 2
1000000
964998
Returns: 8
1000000
631233
Returns: 6
1000000
718118
Returns: 11
1000000
66
Returns: 7
1000000
999593
Returns: 9
999999
33
Returns: 6
999999
999999
Returns: 1
999999
96495
Returns: 6
969696
696696
Returns: 5
999983
427
Returns: 1
510510
44128
Returns: 6
510510
362585
Returns: 6
881790
61
Returns: 4
881790
428
Returns: 6
881790
17290
Returns: 3
881790
337156
Returns: 2
881790
337151
Returns: 5
881790
337152
Returns: 6
5184
1367
Returns: 7
972000
44
Returns: 12
972000
277634
Returns: 7
972000
324044
Returns: 12
408484
31267
Returns: 2
637377
636123
Returns: 4
999954
233632
Returns: 3
676892
123456
Returns: 3
356478
183526
Returns: 4
876542
123537
Returns: 1
964999
488425
Returns: 3
524288
27
Returns: 18
360360
4374
Returns: 7
77777
11111
Returns: 2
997920
508988
Returns: 10
997920
97115
Returns: 11
1000000
806790
Returns: 11
1000000
100012
Returns: 11
1000000
42354
Returns: 9
362880
77777
Returns: 9
1000000
1000000
Returns: 1
418944
161799
Returns: 8
345534
234139
Returns: 3
7
1
Returns: 0
984712
302000
Returns: 3
999983
500000
Returns: 1
999947
336327
Returns: 2
720720
462363
Returns: 7
600
67
Returns: 4
786432
222222
Returns: 18
169
7
Returns: 2
987524
254782
Returns: 3
147456
127523
Returns: 13
999983
1515
Returns: 1
786432
24606
Returns: 17
13
5
Returns: 1
11
5
Returns: 1
1000000
100
Returns: 9
12
5
Returns: 1
1000000
100000
Returns: 3
3000
2001
Returns: 1
10
5
Returns: 1
999983
999982
Returns: 1
77
75
Returns: 2
55997
20000
Returns: 1
100
100
Returns: 1
53
42
Returns: 1
200006
100004
Returns: 1
127
5
Returns: 1
125
8
Returns: 3
997920
22222
Returns: 9
20
14
Returns: 2
1000000
123456
Returns: 7
1000000
14
Returns: 11
200
2
Returns: 1
1000000
598432
Returns: 8
6
3
Returns: 1
524288
11111
Returns: 18
100003
19
Returns: 1
700001
350000
Returns: 1
77
8
Returns: 1
161051
123
Returns: 4
999983
444444
Returns: 1
324
19
Returns: 3
590340
59
Returns: 3
1000000
985421
Returns: 9
8
2
Returns: 1
333101
257733
Returns: 1
999958
499979
Returns: 1
5098
1219
Returns: 1
999999
123457
Returns: 6
999983
555555
Returns: 1
7
7
Returns: 1
720720
86719
Returns: 7
9
9
Returns: 1
15
4
Returns: 1
65
6
Returns: 1
524288
262044
Returns: 18
6
4
Returns: 1
524288
524288
Returns: 1
523673
10000
Returns: 1
17
5
Returns: 1
2
1
Returns: 0
71
5
Returns: 1
10007
5000
Returns: 1
8
8
Returns: 1
84822
58094
Returns: 3
33
13
Returns: 1
80640
11
Returns: 10
68
4
Returns: 2
147
147
Returns: 1
100003
12345
Returns: 1
899197
123934
Returns: 3
1000000
15724
Returns: 11
524288
524270
Returns: 18
531441
531411
Returns: 12
987584
675947
Returns: 7
999997
65537
Returns: 2
500000
102020
Returns: 9
524288
1934
Returns: 18
18
5
Returns: 2
983557
343
Returns: 1
55
6
Returns: 1
931327
889286
Returns: 2
362880
123456
Returns: 7
391
18
Returns: 1
1001
1000
Returns: 2
524287
123456
Returns: 1
198273
128376
Returns: 4
4199
18
Returns: 2
8
4
Returns: 2
7
4
Returns: 1
524288
50
Returns: 16
87
85
Returns: 1
510510
1991
Returns: 5
200006
3
Returns: 1
997920
111111
Returns: 10
524288
523066
Returns: 17
510510
30031
Returns: 1
5706
5322
Returns: 3