Код не проходит все тесты Яндекс Контеста
Есть задача с Яндекс Контеста:
Имеется N кг металлического сплава. Из него изготавливают заготовки массой K кг каждая. После этого из каждой заготовки вытачиваются детали массой M кг каждая (из каждой заготовки вытачивают максимально возможное количество деталей). Если от заготовок после этого что-то остается, то этот материал возвращают к началу производственного цикла и сплавляют с тем, что осталось при изготовлении заготовок. Если того сплава, который получился, достаточно для изготовления хотя бы одной заготовки, то из него снова изготавливают заготовки, из них – детали и т.д. Напишите программу, которая вычислит, какое количество деталей может быть получено по этой технологии из имеющихся исходно N кг сплава.
Формат ввода Вводятся N, K, M. Все числа натуральные и не превосходят 200.
Формат вывода Выведите одно число — количество деталей, которое может получиться по такой технологии.
function calcBillets(str){
if(!str) return 0;
const values = str.split(' ').map(num => Number(num));
let [
alloy, // вес сплава
billet, // вес заготовки
detail // вес детали
] = values;
if((!alloy || !billet || !detail) ||
(detail > billet))
return 0;
let details = 0;
while(alloy >= billet){
// Считаю количество деталей из заготовки
details += Math.floor(billet/detail);
// убираю из сплава вес заготовки
alloy -= billet;
// возвращаю остаток от заготовки
alloy += billet % detail;
}
return `${details}`;
}
Проходит 13 тестов и на 14-ом падает. Тестировал на всевозможных вариантах:
calcBillets('13 5 3');
calcBillets('177 101 17');
calcBillets('127 59 15');
calcBillets('122 133 17');
calcBillets('155 0 1');
calcBillets('178 133 11');
calcBillets('19 0 0');
calcBillets('14 3');
calcBillets('19');
calcBillets('21 13 7');
calcBillets('109 9 7');
calcBillets('189 13 1');
calcBillets('189 13 11');
calcBillets('200');
calcBillets('200 200');
calcBillets('200 200 200');
calcBillets('0');
calcBillets('0 0');
calcBillets('0 0 0');
calcBillets('1 2 3');
calcBillets('1 1 1');
calcBillets('0 1 2');
calcBillets('3 2 1');
calcBillets('');
Что я не учитываю?