Ваше завдання - це x
, результат 2*x
. Легко правильно !? Але є улов: x
буде надано у вигляді (можливо, нескінченної) тривалої дроби , а вихід повинен бути продовженою дробою. Вхід гарантується справжнім алгебраїчним числом, ступінь якого становить не більше 2.
Введення : тривалість фракції x
. Це розділено на 3 частини: цілу частину, префікс та повторювану частину. Ціла частина складається з одного цілого числа. Префікс і повторювана частина - це (можливо, порожні) масиви додатних цілих чисел, які описують префікс і повторювану частину тривалої дроби. Наприклад, вхід (3, [1], [2, 4])
представляє фракцію, що продовжується [3; 1, 2, 4, 2, 4, ...]
.
Якщо повторювана частина порожня, це вказує на раціональне число. Наприклад, (3, [1, 2], [])
представляє [3; 1, 2] = 11/3
. Ви повинні прийняти обидві форми раціонального числа (тобто (3, [1, 1, 1], [])
, що [3; 1, 1, 1] = 11/3
також має бути дійсним введенням).
Вихід : Виведіть триваючу частку в два рази в тому ж форматі, що і вхід. Якщо результат є раціональним, ви можете вивести будь-яку форму тривалої фракції. Поки відповідь еквівалентна правильній відповіді, це добре; не потрібно «стиснення», тому нескінченна частина може трохи «розкручуватися» (наприклад, [1; 4, 2, 3, 2, 3...]
може бути написана (1, [4], [2, 3])
або (1, [4, 2, 3], [2, 3])
). Усі відповіді повинні бути точними.
Тестові приклади : для зручності наведено точний стовпчик форми.
Input Exact Form Output
(0, [] []) 0 (0, [] []) or (-1, [1], [])
(-5, [1, 1], []) -4.5 (-9, [], []) or (-10, [1], [])
(3, [1, 2], []) 11/3 (7, [3], []) or (7, [2, 1], [])
(1, [], [2]) sqrt(2) (2, [], [1, 4])
(-1, [2], [2, 1]) -1/sqrt(3) (-2, [1, 5], [2, 6])
І , нарешті, трохи більше , тест , щоб забезпечити точність: (0, [1], [6, 1, 3, 1, 42, 1, 3, 1, 6, 2]) --> (1, [], [1, 2, 1, 8, 1, 20, 1, 8, 1, 2, 1, 2])
.
Найкоротший код виграє!
Підказка : Ви можете виконувати арифметику досить прямо на тривалих дробах, як описано тут . Подвійне продовження дробу є лише особливим випадком цього алгоритму (хоча складну частину можна знайти, коли повторний дріб повторюється).
Sqrt[2]
.
[3; 1, 1, 1]
буде (3, [1, 1, 1], [])
у вхідному форматі, який ми використовуємо - тому питання, ймовірно, повинно згадувати його у тому форматі (у третьому абзаці), просто для забезпечення ясності
(-2, [1, 5, 2], [6, 2])
буде прийнятним вихід для введення (-1, [2], [2, 1])
? Як щодо (-2, [1, 5, 2, 6, 2, 6], [2, 6])
?