Welcome to Subscribe On Youtube
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 <= 109
num
does not contain0
as one of its digits.
Solutions
Solution 1: Enumeration
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)$.
-
class Solution { public int countDigits(int num) { int ans = 0; for (int x = num; x > 0; x /= 10) { if (num % (x % 10) == 0) { ++ans; } } return ans; } }
-
class Solution { public: int countDigits(int num) { int ans = 0; for (int x = num; x > 0; x /= 10) { if (num % (x % 10) == 0) { ++ans; } } return ans; } };
-
class Solution: def countDigits(self, num: int) -> int: ans, x = 0, num while x: x, val = divmod(x, 10) ans += num % val == 0 return ans
-
func countDigits(num int) (ans int) { for x := num; x > 0; x /= 10 { if num%(x%10) == 0 { ans++ } } return }
-
function countDigits(num: number): number { let ans = 0; for (let x = num; x; x = (x / 10) | 0) { if (num % (x % 10) === 0) { ++ans; } } return ans; }
-
impl Solution { pub fn count_digits(num: i32) -> i32 { let mut ans = 0; let mut cur = num; while cur != 0 { if num % (cur % 10) == 0 { ans += 1; } cur /= 10; } ans } }