3723. Maximize Sum of Squares of Digits
SourceBiweekly Contest 168 Q2DifficultyMediumRating1536
Description
You are given two positive integers num and sum.
A positive integer n is good if it satisfies both of the following:
- The number of digits in
nis exactlynum. - The sum of digits in
nis exactlysum.
The score of a good integer n is the sum of the squares of digits in n.
Return a string denoting the good integer n that achieves the maximum score. If there are multiple possible integers, return the maximum one. If no such integer exists, return an empty string.
Example 1:
Input: num = 2, sum = 3
Output: "30"
Explanation:
There are 3 good integers: 12, 21, and 30.
- The score of 12 is
12 + 22 = 5. - The score of 21 is
22 + 12 = 5. - The score of 30 is
32 + 02 = 9.
The maximum score is 9, which is achieved by the good integer 30. Therefore, the answer is "30".
Example 2:
Input: num = 2, sum = 17
Output: "98"
Explanation:
There are 2 good integers: 89 and 98.
- The score of 89 is
82 + 92 = 145. - The score of 98 is
92 + 82 = 145.
The maximum score is 145. The maximum good integer that achieves this score is 98. Therefore, the answer is "98".
Example 3:
Input: num = 1, sum = 10
Output: ""
Explanation:
There are no integers that have exactly 1 digit and whose digits sum to 10. Therefore, the answer is "".
Constraints:
1 <= num <= 2 * 1051 <= sum <= 2 * 106
Solutions
Solution 1: Greedy
Thinking
Enumerating every \(\text{num}\)-digit integer whose digits sum to \(\text{sum}\) and then comparing scores cannot finish when \(\text{num}\) reaches \(2\times 10^5\). The candidate set grows exponentially with the length, and the score still depends on how the digits are spread out, so the comparison itself is the bottleneck. Squaring is convex on the non-negative integers, so a fixed sum produces a larger sum of squares when the digits are concentrated; the optimal multiset is therefore as many \(9\)s as possible plus at most one remainder. Writing those larger digits from the high end leaves the score unchanged and selects the numerically largest integer among ties, which is why the answer is assembled directly in that order.
If \(\text{num} \times 9 < \text{sum}\), then there is no valid good integer, so we return an empty string.
Otherwise, we can use as many digits \(9\) as possible to form the good integer, since \(9^2\) is the largest and will maximize the score. Specifically, we calculate how many \(9\)s are contained in \(\text{sum}\), denoted as \(k\), and the remaining part \(s = \text{sum} - 9 \times k\). Then, we construct the good integer with the first \(k\) digits as \(9\). If \(s > 0\), we append a digit \(s\) at the end, and finally pad with \(0\)s to reach a total of \(\text{num}\) digits.
The time complexity is \(O(\text{num})\) and the space complexity is \(O(\text{num})\), where \(\text{num}\) is the number of digits in the good integer.
1 2 3 4 5 6 7 8 9 10 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |