Я строю гигантского робота Lego, и мне нужно сгенерировать некоторые конкретные передаточные числа, используя набор передач. У меня много передач с общими размерами лего: 8, 16, 24 или 40 зубьев. Напишите программу, которую я могу использовать, где я вводю передаточное число, и программа говорит мне, какую комбинацию шестерен я должен использовать, чтобы получить требуемое передаточное число.
Отношение ввода будет указано на стандартном вводе (или эквиваленте вашего языка) с двумя целыми числами, разделенными двоеточием. Соотношение a:bозначает, что выходной вал должен вращаться a/bтак же быстро, как и входной вал.
Вывод в стандартный вывод должен быть отдельной строкой, содержащей разделенный пробелами список передаточных чисел, в виде x:yгде x- размер шестерни на входном валу и yразмер шестерни на выходном валу. Вы должны использовать минимально возможное количество передач для данного передаточного числа. Каждый xи yдолжен быть одним из 8,16,24,40.
Примеры:
1:5 -> 8:40
10:1 -> 40:8 16:8
9:4 -> 24:16 24:16
7:1 -> IMPOSSIBLE
7:7 ->
6:15 -> 16:40
Если желаемое передаточное число невозможно, выведите «Невозможно». Если никаких передач не требуется, выведите пустую строку.
Это код гольф, самый короткий ответ выигрывает.
1:5 -> 8:40и 10:1 -> 40:8имеет смысл, но другие не так много.
1:5означает, что выходной вал вращается в 5 раз медленнее, и на этом происходит 8-зубчатая передача на входе и 40-зубчатая передача на выходе.
10:1 -> 40:8 16:8не то, что ты сказал. Что насчет других смущает вас? 9:4реализован, делая 3:2дважды. 3:2реализуется с помощью 24:16.
7:7так же, как 1:1, так что не требует никаких механизмов для реализации.