carloscn / structstudy

Leetcode daily trainning by using C/C++/RUST programming.
4 stars 1 forks source link

leetcode2520: Count the Digits That Divide a Number #412

Open carloscn opened 10 months ago

carloscn commented 10 months ago

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 contain 0 as one of its digits.

carloscn commented 10 months ago

Analysis

static int32_t count_digits(int32_t num)
{
    int32_t ret = 0;
    int32_t num_dup = num;

    while (num_dup != 0) {
        ret += ((num % (num_dup % 10)) == 0) ? 1 : 0;
        num_dup /= 10;
    }

finish:
    return ret;
}
carloscn commented 10 months ago

Code

https://review.gerrithub.io/c/carloscn/structstudy/+/1171712 https://github.com/carloscn/structstudy/commit/693ce2af8cb6e6da6c058ee8ab1ce9d37c383ffe