2520. Count the Digits That Divide a Number
Description
Given an integer num, return the number of digits in num that divide num.
An integer val divides nums if nums % val == 0.
Example 1:
Input: num = 7 Output: 1 Explanation: 7 divides itself, hence the answer is 1.
Example 2:
Input: num = 121 Output: 2 Explanation: 121 is divisible by 1, but not 2. Since 1 occurs twice as a digit, we return 2.
Example 3:
Input: num = 1248 Output: 4 Explanation: 1248 is divisible by all of its digits, hence the answer is 4.
Constraints:
1 <= num <= 109numdoes not contain0as one of its digits.
Solutions
Solution 1: Enumeration
Thinking
Count how many digits of \(num\) divide \(num\). There are at most ten digits, so enumerating them is enough.
Repeatedly take \(val = num \bmod 10\) and test \(num \bmod val = 0\). The input contains no zero, so division by zero does not arise.
We directly enumerate each digit \(val\) of the integer \(num\), and if \(val\) can divide \(num\), we add one to the answer.
After the enumeration, we return the answer.
The time complexity is \(O(\log num)\), and the space complexity is \(O(1)\).
1 2 3 4 5 6 7 | |
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 | |
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
1 2 3 4 5 6 7 8 9 10 11 | |
Solution 2
Thinking
Solution 1 extracts digits arithmetically. Converting \(num\) to a decimal string and testing each character yields the same check; only the way digits are obtained changes.
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 | |