Problem Statement
Taro shows a magic trick to Hanako.
Taro: Hello Hanako. I'll show you a magic trick. Please imagine a positive integer less than or equal to 16.
Hanako: OK. I imagined it.
Taro: (Taro shows card 1 to Hanako.) Does this card contain your number?
Hanako: Yes.
Taro: (Taro shows card 2 to Hanako.) Does this card contain your number?
Hanako: No.
Taro: (Taro shows card 3 to Hanako.) Does this card contain your number?
Hanako: Yes.
Taro: (Taro shows card 4 to Hanako.) Does this card contain your number?
Hanako: Yes.
Taro: Your number is 5!

(Card 1 contains 1, 2, 3, 4, 5, 6, 7 and 8. Card 2 contains 1, 2, 3, 4, 9, 10, 11 and 12. Card 3 contains 1, 2, 5, 6, 9, 10, 13 and 14. Card 4 contains 1, 3, 5, 7, 9, 11, 13 and 15.)
Let's generalize this magic trick. Hanako imagines a positive integer less than or equal to N. Each card must contain exactly M different integers between 1 and N, inclusive. Taro must be able to determine Hanako's number correctly using her answers to his questions. Return the minimal number of cards required to perform this magic trick successfully every time.
Definition
- Class:
- NumberMagic
- Method:
- theMin
- Parameters:
- int, int
- Returns:
- int
- Method signature:
- int theMin(int N, int M)
- (be sure your method is public)
Constraints
- N will be between 2 and 1,000,000,000, inclusive.
- M will be between 1 and N-1, inclusive.
Examples
16
8
Returns: 4
The example from the statement.
2
1
Returns: 1
Write 1 on the only card. If Hanako answers "yes", her number is 1. If she answers "no", her number is 2.
3
1
Returns: 2
1000000000
58585858
Returns: 101
1000000000
999999999
Returns: 999999999
1000000000
487220633
Returns: 30
1000000000
487220632
Returns: 31
1000000000
423630625
Returns: 31
1000000000
423630624
Returns: 32
1000000000
615014966
Returns: 32
1000000000
615014967
Returns: 33
1000000000
644817456
Returns: 33
1000000000
644817457
Returns: 34
1000000000
671049375
Returns: 34
1000000000
671049376
Returns: 35
1000000000
601746
Returns: 4965
1000000000
601745
Returns: 4966
1000000000
481
Returns: 4149378
1000000000
480
Returns: 4158005
1000000000
999999996
Returns: 400000000
1000000000
999999997
Returns: 500000000
1000000000
992909691
Returns: 560
1000000000
992909692
Returns: 561
1000000000
1945532
Returns: 1662
1000000000
1945531
Returns: 1663
1066
1064
Returns: 710
1066
1065
Returns: 1065
143466
143435
Returns: 8967
143466
143436
Returns: 9256
7
5
Returns: 4
7
6
Returns: 6
19905
19520
Returns: 132
19905
19521
Returns: 133
727
476
Returns: 11
727
477
Returns: 12
4
2
Returns: 2
4
1
Returns: 3
180311215
160318171
Returns: 60
180311215
160318172
Returns: 61
80
25
Returns: 8
80
24
Returns: 9
5455733
1401
Returns: 7783
5455733
1400
Returns: 7789
42
40
Returns: 28
42
41
Returns: 41
638580305
51105
Returns: 29165
3000144
2992242
Returns: 1067
40835
36
Returns: 2208
894
870
Returns: 72
841
5
Returns: 280
5
1
Returns: 4
361
81
Returns: 13
767
60
Returns: 31
825978418
1469487
Returns: 1696
11
4
Returns: 4
12
4
Returns: 5
62656938
4043405
Returns: 85
352907699
9212942
Returns: 187
426136055
359671822
Returns: 50
907701110
214402198
Returns: 40
294150986
12833641
Returns: 121
520656681
376119647
Returns: 36
1654371
976655
Returns: 22
614206798
519432612
Returns: 51
504872092
493470762
Returns: 214
557297208
171833982
Returns: 35
1000000000
1
Returns: 999999999
1000000000
2
Returns: 666666666
1000000000
2323
Returns: 860586
98779877
9877
Returns: 20000
1000000000
18276
Returns: 109428
999999997
493608
Returns: 6041
1000000000
113
Returns: 17543860
999999997
997
Returns: 2004009
928198322
4242
Returns: 437520
586243791
845716
Returns: 2078
1000000000
123
Returns: 16129033
987717893
2753
Returns: 717297
17
8
Returns: 5
5
2
Returns: 3
1000000000
10
Returns: 181818182
1000000000
2000
Returns: 999501
10000
4
Returns: 4000
5475474
547457
Returns: 54
1000000000
433434
Returns: 6868
57325484
2527574
Returns: 111
47018974
44342348
Returns: 89
324584819
134128489
Returns: 30
300000000
234224223
Returns: 40