Input: num =58, k =9Output: 2Explanation:
One valid set is[9,49], as the sum is58 and each integer has a units digit of 9.Another valid set is[19,39].It can be shown that 2is the minimum possible size of a valid set.
We want the minimum number of positive integers with units digit k that sum to num. Try all possible counts x (from 1 to 300, since num <= 3000), and check if num - k * x is non-negative and divisible by 10. If so, x is a valid answer. Return the smallest such x, or 0 if num == 0, or -1 if not possible.
classSolution {
public:int minimumNumbers(int num, int k) {
if (num ==0) return0;
for (int x =1; x <=300; ++x) {
if (num - k * x <0) break;
if ((num - k * x) %10==0) return x;
}
return-1;
}
};
1
2
3
4
5
6
7
8
9
10
classSolution {
publicintminimumNumbers(int num, int k) {
if (num == 0) return 0;
for (int x = 1; x <= 300; ++x) {
if (num - k * x < 0) break;
if ((num - k * x) % 10 == 0) return x;
}
return-1;
}
}
1
2
3
4
5
6
7
8
9
10
classSolution {
funminimumNumbers(num: Int, k: Int): Int {
if (num ==0) return0for (x in1..300) {
if (num - k * x < 0) breakif ((num - k * x) % 10==0) return x
}
return -1 }
}
1
2
3
4
5
6
7
8
9
10
classSolution:
defminimumNumbers(self, num: int, k: int) -> int:
if num ==0:
return0for x in range(1, 301):
if num - k * x <0:
breakif (num - k * x) %10==0:
return x
return-1
1
2
3
4
5
6
7
8
9
10
impl Solution {
pubfnminimum_numbers(num: i32, k: i32) -> i32 {
if num ==0 { return0; }
for x in1..=300 {
if num - k * x <0 { break; }
if (num - k * x) %10==0 { return x; }
}
-1 }
}
1
2
3
4
5
6
7
8
functionminimumNumbers(num: number, k: number):number {
if (num===0) return0;
for (letx=1; x<=300; ++x) {
if (num-k*x<0) break;
if ((num-k*x) %10===0) returnx;
}
return-1;
}