2180. Count Integers With Even Digit Sum
Description
Given a positive integer num, return the number of positive integers less than or equal to num whose digit sums are even.
The digit sum of a positive integer is the sum of all its digits.
Example 1:
Input: num = 4 Output: 2 Explanation: The only integers less than or equal to 4 whose digit sums are even are 2 and 4.
Example 2:
Input: num = 30 Output: 14 Explanation: The 14 integers less than or equal to 30 whose digit sums are even are 2, 4, 6, 8, 11, 13, 15, 17, 19, 20, 22, 24, 26, and 28.
Constraints:
1 <= num <= 1000
Solutions
Solution 1
Thinking
Count integers in \([1,\textit{num}]\) whose digits sum to an even number. \(\textit{num}\le 1000\), so we may sum digits of every value.
Repeatedly add \(x\bmod 10\) and increment when the sum is even.
The extra factor is the number of digits.
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 | |
1 2 3 4 5 6 7 8 9 10 11 12 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Solution 2
Thinking
Solution 1 is linear in \(\textit{num}\). Among every ten consecutive integers exactly five have an even digit sum, so full decades can be closed in \(O(1)\).
Decades contribute \(\lfloor\textit{num}/10\rfloor\times 5\), minus one to drop \(0\). The leftover units depend on the parity of the higher digit sum \(s\), which shifts the closed-form count.
Only the digits of \(\textit{num}/10\) are walked.
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 10 11 | |
1 2 3 4 5 6 7 8 9 10 11 12 | |
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 | |