Problem Statement
You are creating the money system for a new game. The requirements are as follows:
- There will be exactly K different banknote values.
- The value of the smallest banknote will be equal to one dollar.
- The value of the i-th banknote will be equal to the value of the (i-1)-th banknote multiplied by 2, 3, 4 or 5.
The initial capital of a player will be N dollars, so you want to choose banknote values in such a way that minimizes the number of banknotes required to make N dollars. Assume that you have an infinite supply of banknotes for each value.
You will be given two integers N and K. Due to technical reasons, N will be given as a
Definition
- Class:
- NewMoneySystem
- Method:
- chooseBanknotes
- Parameters:
- String, int
- Returns:
- long
- Method signature:
- long chooseBanknotes(String N, int K)
- (be sure your method is public)
Constraints
- N will be an integer between 1 and 1018, inclusive, with no leading zeros.
- K will be between 1 and 100, inclusive.
Examples
"1025"
6
Returns: 2
The best set of banknote values is {1, 4, 16, 64, 256, 1024}. 1025 = 1024 + 1.
"1005"
5
Returns: 3
The best set of banknote values is {1, 5, 25, 100, 500}. 1005 = 2 * 500 + 5.
"12000"
14
Returns: 1
"924323565426323626"
1
Returns: 924323565426323626
The answer can be rather big.
"924323565426323626"
50
Returns: 10
"1000000000000000000"
1
Returns: 1000000000000000000
"1000000000000000000"
36
Returns: 1
"1000000000000000000"
34
Returns: 1
"1"
1
Returns: 1
"1"
100
Returns: 1
"7"
100
Returns: 2
"1000000000000000000"
100
Returns: 1
"59"
3
Returns: 7
"3599"
6
Returns: 10
"215999"
9
Returns: 16
"12959999"
12
Returns: 17
"777599999"
15
Returns: 23
"46655999999"
18
Returns: 27
"2799359999999"
21
Returns: 33
"167961599999999"
24
Returns: 33
"10077695999999999"
27
Returns: 38
"604661759999999999"
30
Returns: 41
"192432261334"
40
Returns: 8
"19332614"
31
Returns: 6
"246277938566864"
47
Returns: 11
"26642438275453"
27
Returns: 11
"927"
11
Returns: 3
"38136235793326225"
38
Returns: 9
"953"
41
Returns: 4
"78"
2
Returns: 18
"4"
32
Returns: 1
"3"
14
Returns: 1
"35344892846146"
36
Returns: 10
"72546"
9
Returns: 5
"866228215766"
46
Returns: 9
"342975954184"
19
Returns: 12
"181849565356"
16
Returns: 29
"25326627334245"
39
Returns: 7
"2458673655"
1
Returns: 2458673655
"528941196"
41
Returns: 5
"57712125"
18
Returns: 4
"71275313"
20
Returns: 7
"345532372883739"
10
Returns: 176912603
"54949236439551957"
41
Returns: 10
"5"
48
Returns: 1
"37576"
35
Returns: 3
"561173151851879"
36
Returns: 12
"954246215119"
22
Returns: 11
"85225966526744"
21
Returns: 21
"26163"
36
Returns: 3
"629285663"
27
Returns: 8
"993556"
33
Returns: 5
"123241977579112491"
43
Returns: 11
"474676931998777871"
26
Returns: 36
"66899777555156549"
41
Returns: 10
"597178975547595112"
30
Returns: 16
"574777873587886"
35
Returns: 12
"889891776722159"
25
Returns: 18
"919973122798829287"
43
Returns: 15
"369527117423652"
24
Returns: 9
"522353413731666175"
14
Returns: 427911935
"895638226688675"
5
Returns: 1433021162707
"762315356886997418"
18
Returns: 999218
"13214373879396797"
43
Returns: 14
"71959946744918637"
31
Returns: 11
"86891948369876633"
42
Returns: 12
"6629716148522132"
26
Returns: 14
"52716887793411475"
21
Returns: 587
"121934885619594972"
38
Returns: 10
"943412933414453851"
16
Returns: 30913767
"817543138393458831"
32
Returns: 14
"914346125918722863"
20
Returns: 47979
"195955923836882"
22
Returns: 20
"84911522964686354"
17
Returns: 556514
"4869439183774943"
17
Returns: 31951
"939144231842438"
19
Returns: 294
"33987261141554932"
32
Returns: 11
"382772194686274765"
40
Returns: 10
"554865247818621665"
27
Returns: 26
"5567349627783654"
10
Returns: 2850483026
"89855378478355687"
40
Returns: 11
"51689449692452925"
4
Returns: 413515597539625
"1005"
5
Returns: 3
"924323565426323623"
50
Returns: 13
"924325426323626"
1
Returns: 924325426323626
"989898979698989898"
99
Returns: 13
"99979999999999999"
21
Returns: 1115
"924323565426323623"
49
Returns: 13