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 contain 0 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;
}

回目錄 Catalog