一、题目
给你两个整数 num
和 k
,考虑具有以下属性的正整数多重集:
- 每个整数个位数字都是
k
。 - 所有整数之和是
num
。
返回该多重集的最小大小,如果不存在这样的多重集,返回-1
。
注意:
- 多重集与集合类似,但多重集可以包含多个同一整数,空多重集的和为
0
。 - 个位数字 是数字最右边的数位。
示例 :
输入:num = 58, k = 9
输出:2
解释:
多重集 [9,49] 满足题目条件,和为 58 且每个整数的个位数字是 9 。
另一个满足条件的多重集是 [19,39] 。
可以证明 2 是满足题目条件的多重集的最小长度。
提示:
0 <= num <= 3000
0 <= k <= 9
二、题解
- 比较尾数即可
- 为什么
i <= 10
? 因为(k*11)%10
一定等于(k*1)%10
/**
* @param {number} num
* @param {number} k
* @return {number}
*/
var minimumNumbers = function (num, k) {
if (num === 0) return 0
for (let i = 1; i <= 10; i++){
if ((k * i) % 10 === num % 10) {
if (num >= k * i) {
return i
}
}
}
return -1
};