Problem Statement
You are given two positive integers, sum and count. Consider all possible ways to express sum as a sum of exactly count positive integers. Two ways are considered equal if we can obtain one from the other by changing the order of the summed numbers. For example, 8=3+2+1+1+1 is the same as 8=1+3+1+2+1, but not the same as 8=3+2+2+1. Thus we will only be interested in such summations where the summed integers are in non-increasing order.
For example, if sum=8 and count=3, the possible ways are:
8 = 6+1+1 8 = 3+3+2 8 = 4+2+2 8 = 4+3+1 8 = 5+2+1
We may now order these summations in the following way: Order them according to the first summand in decreasing order. In case of a tie, order them according to the second summand, etc. In general, to compare two summations, look at the first summand where they differ. The one where this summand is larger will be earlier in our order.
For our previous example, the correct order is:
8 = 6+1+1 8 = 5+2+1 8 = 4+3+1 8 = 4+2+2 8 = 3+3+2
You will be given three
Definition
- Class:
- FixedSizeSums
- Method:
- kthElement
- Parameters:
- int, int, int
- Returns:
- String
- Method signature:
- String kthElement(int sum, int count, int index)
- (be sure your method is public)
Notes
- You may assume that the total number of possible summations will never exceed 2,000,000,000.
Constraints
- sum is between 1 and 150, inclusive.
- count is between 1 and 150, inclusive.
- index is between 0 and 2,000,000,000, inclusive.
Examples
8
3
2
Returns: "8=4+3+1"
This is the example from the problem statement. Look at the ordered list of possible summations and number them starting with zero.
13
1
0
Returns: "13=13"
There is only one possibility here.
13
13
0
Returns: "13=1+1+1+1+1+1+1+1+1+1+1+1+1"
Again, there is only one possible summation.
7
10
3
Returns: ""
This is impossible. A sum of 10 positive integers is never equal to 7.
17
2
4
Returns: "17=12+5"
The first five possible summations are: "17=16+1", "17=15+2", "17=14+3", "17=13+4", and "17=12+5".
140
17
87654321
Returns: "140=40+31+15+15+9+7+4+4+2+2+2+2+2+2+1+1+1"
150
23
1901740433
Returns: "150=7+7+7+7+7+7+7+7+7+7+7+7+6+6+6+6+6+6+6+6+6+6+6"
150
23
1903000047
Returns: ""
150
22
1901740430
Returns: ""
150
24
1765432109
Returns: "150=17+17+16+14+12+12+11+9+9+7+7+2+2+2+2+2+2+1+1+1+1+1+1+1"
148
40
470000000
Returns: ""
1
1
0
Returns: "1=1"
1
1
1
Returns: ""
1
1
2
Returns: ""
1
1
3
Returns: ""
1
2
0
Returns: ""
1
2
1
Returns: ""
1
2
2
Returns: ""
1
2
3
Returns: ""
1
3
0
Returns: ""
1
3
1
Returns: ""
1
3
2
Returns: ""
1
3
3
Returns: ""
1
4
0
Returns: ""
1
4
1
Returns: ""
1
4
2
Returns: ""
1
4
3
Returns: ""
2
1
0
Returns: "2=2"
2
1
1
Returns: ""
2
1
2
Returns: ""
2
1
3
Returns: ""
2
2
0
Returns: "2=1+1"
2
2
1
Returns: ""
2
2
2
Returns: ""
2
2
3
Returns: ""
2
3
0
Returns: ""
2
3
1
Returns: ""
2
3
2
Returns: ""
2
3
3
Returns: ""
2
4
0
Returns: ""
2
4
1
Returns: ""
2
4
2
Returns: ""
2
4
3
Returns: ""
3
1
0
Returns: "3=3"
3
1
1
Returns: ""
3
1
2
Returns: ""
3
1
3
Returns: ""
3
2
0
Returns: "3=2+1"
3
2
1
Returns: ""
3
2
2
Returns: ""
3
2
3
Returns: ""
3
3
0
Returns: "3=1+1+1"
3
3
1
Returns: ""
3
3
2
Returns: ""
3
3
3
Returns: ""
3
4
0
Returns: ""
3
4
1
Returns: ""
3
4
2
Returns: ""
3
4
3
Returns: ""
4
1
0
Returns: "4=4"
4
1
1
Returns: ""
4
1
2
Returns: ""
4
1
3
Returns: ""
4
2
0
Returns: "4=3+1"
4
2
1
Returns: "4=2+2"
4
2
2
Returns: ""
4
2
3
Returns: ""
4
3
0
Returns: "4=2+1+1"
4
3
1
Returns: ""
4
3
2
Returns: ""
4
3
3
Returns: ""
4
4
0
Returns: "4=1+1+1+1"
4
4
1
Returns: ""
4
4
2
Returns: ""
4
4
3
Returns: ""
147
1
0
Returns: "147=147"
147
1
1
Returns: ""
147
1
2000000000
Returns: ""
143
143
0
Returns: "143=1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1"
143
143
1
Returns: ""
143
142
0
Returns: "143=2+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1"
143
142
1
Returns: ""
143
141
0
Returns: "143=3+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1"
143
141
1
Returns: "143=2+2+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1"
143
141
2
Returns: ""
73
16
123456
Returns: "73=20+7+6+6+6+5+5+4+3+3+3+1+1+1+1+1"
150
23
12
Returns: "150=123+6+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1"
150
23
123
Returns: "150=118+5+3+2+2+2+2+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1"
150
12
1234
Returns: "150=121+10+10+1+1+1+1+1+1+1+1+1"
150
23
12345
Returns: "150=101+13+5+5+5+2+2+2+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1"
150
24
123456
Returns: "150=89+17+9+4+2+2+2+2+2+2+2+2+2+2+2+1+1+1+1+1+1+1+1+1"
150
23
1234567
Returns: "150=77+28+9+8+6+4+2+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1"
50
150
987654321
Returns: ""
150
150
987654321
Returns: ""
150
23
87654321
Returns: "150=48+27+13+13+7+4+4+4+4+3+3+3+3+3+2+2+1+1+1+1+1+1+1"
150
25
234567890
Returns: "150=39+23+12+10+6+5+5+4+4+4+4+4+4+4+4+4+3+3+2+1+1+1+1+1+1"
113
17
643523
Returns: "113=49+24+5+4+4+4+4+4+3+3+3+1+1+1+1+1+1"
113
65
3253265
Returns: ""
147
2
35
Returns: "147=111+36"
140
17
87654321
Returns: "140=40+31+15+15+9+7+4+4+2+2+2+2+2+2+1+1+1"
150
25
2000000000
Returns: ""
150
20
1003
Returns: "150=114+9+4+3+3+2+2+1+1+1+1+1+1+1+1+1+1+1+1+1"
147
37
123456789
Returns: "147=30+20+15+15+11+6+6+4+4+4+3+2+2+2+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1"
141
13
87653321
Returns: "141=37+21+17+16+15+10+7+5+4+4+2+2+1"
150
77
1089
Returns: "150=57+7+3+3+3+2+2+2+2+2+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1"
150
50
10000
Returns: "150=75+11+9+7+2+2+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1"
150
50
1000000
Returns: "150=52+14+10+8+5+4+3+2+2+2+2+2+2+2+2+2+2+2+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1"
141
13
87653021
Returns: "141=37+21+17+16+15+12+5+3+3+3+3+3+3"
150
17
90000000
Returns: "150=50+27+14+13+5+5+5+5+5+5+4+2+2+2+2+2+2"
150
150
2000000000
Returns: ""