列表

详情


3345. 最小可整除数位乘积 I

给你两个整数 n 和 t 。请你返回大于等于 n 的 最小 整数,且该整数的 各数位之积 能被 t 整除。

 

示例 1:

输入:n = 10, t = 2

输出:10

解释:

10 的数位乘积为 0 ,可以被 2 整除,所以它是大于等于 10 且满足题目要求的最小整数。

示例 2:

输入:n = 15, t = 3

输出:16

解释:

16 的数位乘积为 6 ,可以被 3 整除,所以它是大于等于 15 且满足题目要求的最小整数。

 

提示:

相似题目

给定数字乘积的最小数字

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int smallestNumber(int n, int t) { } };

golang 解法, 执行用时: 0 ms, 内存消耗: 3.9 MB, 提交时间: 2024-11-13 00:13:10

func smallestNumber(n, t int) int {
	for i := n; ; i++ {
		prod := 1
		for x := i; x > 0; x /= 10 {
			prod *= x % 10
		}
		if prod%t == 0 {
			return i
		}
	}
}

cpp 解法, 执行用时: 0 ms, 内存消耗: 8.2 MB, 提交时间: 2024-11-13 00:12:56

class Solution {
public:
    int smallestNumber(int n, int t) {
        for (int i = n; ; i++) {
            int prod = 1;
            for (int x = i; x; x /= 10) {
                prod *= x % 10;
            }
            if (prod % t == 0) {
                return i;
            }
        }
    }
};

java 解法, 执行用时: 0 ms, 内存消耗: 40 MB, 提交时间: 2024-11-13 00:12:43

class Solution {
    int smallestNumber(int n, int t) {
        for (int i = n; ; i++) {
            int prod = 1;
            for (int x = i; x > 0; x /= 10) {
                prod *= x % 10;
            }
            if (prod % t == 0) {
                return i;
            }
        }
    }
}

python3 解法, 执行用时: 0 ms, 内存消耗: 16.6 MB, 提交时间: 2024-11-13 00:12:30

class Solution:
    def smallestNumber1(self, n: int, t: int) -> int:
        for x in count(n):
            prod = reduce(mul, map(int, str(x)))
            if prod % t == 0:
                return x

    def smallestNumber(self, n: int, t: int) -> int:
        for i in count(n):
            prod = 1
            x = i
            while x:
                x, d = divmod(x, 10)
                prod *= d
            if prod % t == 0:
                return i

上一题