2269 找到一个数字的 K 美丽值

·   ·   ·   ·

  ·   ·


题目链接

2269. 找到一个数字的 K 美丽值

分析

遍历每一个长度为 $k$ 的子字符串计算即可

可以使用 $10^k$ 来作为模数取出长度为 $k$ 的子字符串

代码实现

class Solution {
public:
    int divisorSubstrings(int num, int k) {
        if(num == 1e9) // 特判不用写long long
            return 1;
        int ans = 0;
        int mod = pow(10, k);
        for(int i = num; i >= mod / 10; i /= 10) {
            int t = i % mod;
            if(t > 0 && !(num % t)) 
                ans++;
        }
        return ans;
    }
};

复杂度分析

  • 时间复杂度:$O(n)$,$n$ 为 $num$ 的位数
  • 空间复杂度:$O(1)$