Я будую гігантського робота-лего, і мені потрібно створити певні передаточні коефіцієнти, використовуючи набір передач. У мене багато передач із загальними розмірами зубчастих коліс: 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
, тому для його здійснення не потрібно передач.