class Solution {
public:
int minimumNumbers(int num, int k) {
}
};
2310. 个位数字为 K 的整数之和
给你两个整数 num
和 k
,考虑具有以下属性的正整数多重集:
k
。num
。返回该多重集的最小大小,如果不存在这样的多重集,返回 -1
。
注意:
0
。
示例 1:
输入:num = 58, k = 9 输出:2 解释: 多重集 [9,49] 满足题目条件,和为 58 且每个整数的个位数字是 9 。 另一个满足条件的多重集是 [19,39] 。 可以证明 2 是满足题目条件的多重集的最小长度。
示例 2:
输入:num = 37, k = 2 输出:-1 解释:个位数字为 2 的整数无法相加得到 37 。
示例 3:
输入:num = 0, k = 7 输出:0 解释:空多重集的和为 0 。
提示:
0 <= num <= 3000
0 <= k <= 9
原站题解
php 解法, 执行用时: 8 ms, 内存消耗: 18.8 MB, 提交时间: 2023-08-22 10:11:12
class Solution { /** * @param Integer $num * @param Integer $k * @return Integer */ function minimumNumbers($num, $k) { if ( $num == 0 ) return 0; for ( $i = 1; $i <= $num && $i * $k <= $num; $i++ ) { if ( ($num - $i * $k) % 10 == 0 ) return $i; } return -1; } }
golang 解法, 执行用时: 0 ms, 内存消耗: 1.9 MB, 提交时间: 2023-08-22 10:09:42
func minimumNumbers(num int, k int) int { if num == 0 { return 0 } for i := 1; i <= num && i * k <= num; i++ { if ( num - i * k ) % 10 == 0 { return i } } return -1 }
python3 解法, 执行用时: 48 ms, 内存消耗: 16 MB, 提交时间: 2023-08-22 10:03:57
''' 从小到大枚举 n,找到第一个满足 num−nk 是 10 的倍数的 n。 由于 n 不会超过 num,我们至多枚举到 num 时停止。 注意特判 num=0 的情况,此时返回 0。 ''' class Solution: def minimumNumbers(self, num: int, k: int) -> int: if num == 0: return 0 for n in range(1, num+1): if num - n * k < 0: break if (num - n * k) % 10 == 0: return n return -1