Алгоритм возможных комбинаций по двум числам
Есть задача: даны два числа 7 и 10. Есть число K = 16. Нужно вывести все комбинации чисел 7 и 10 чтобы их сумма была равна не менее K Например:
- 10 + 7 = 17
- 7 + 7 + 10 = 24 Здесь вариантом с самой минимальной и наиболее близкой к К является №1. Если сумма варианта равна К, то дальше считать не имеет смысла. Важно получить комбинацию по сумме наиболее близкую к К.
Помогите, пожалуйста, с решением данной задачи. Если можно, то на языке php или js.
Ответы (1 шт):
Автор решения: Igor
→ Ссылка
function calc(a, b, k) {
let na = Math.ceil(k / a);
let nb = Math.ceil(k / b);
let ca = na, cb = 0, diff = na * a - k;
for (let i = na; i >= 0; i--) {
for (let j = nb; j >= 0; j--) {
let d = i * a + j * b - k;
if (d < 0)
break;
if (d < diff) {
diff = d;
ca = i;
cb = j;
}
}
}
return `${a} * ${ca} + ${b} * ${cb} - ${k} = ${diff}`;
}
console.log(calc(7, 8, 20));
console.log(calc(3, 8, 100));
console.log(calc(7, 10, 16));