2520. Count the Digits That Divide a Number
- Hardness: \(\color{green}\textsf{Easy}\)
- Ralated Topics:
- \(\color{blue}\textsf{Weekly Contest 323}\)
一、題目
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 answer is 4.
Constraints:
1 <= num <= 10^9
num
does not contain0
as one of its digits.
二、分析
- 此題會用到遍歷所有 digit 的方法:
while (num > 0){
int digit = num % 10;
num /= 10;
}
+ 利用上面的方法,再針對題目做相應的統計即可。
三、解題
1. Math
- Time complexity: \(O(n)\)
- Space complexity: \(O(1)\)
int countDigits(int num) {
int res = 0;
int x = num;
while (x > 0) {
int tmp = x % 10;
if (num % tmp == 0) res++;
x /= 10;
}
return res;
}