eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Швидке піднесення до степеня

Швидке піднесення до степеня

Дуже часто постає задача ефективного обчислення xn за заданими x та n, де n - додатне ціле число.

Припустимо, наприклад, що необхідно обчислити x16. Можна просто розпочати з x і 15 разів помножити його на x. Але ту ж відповідь можна отримати усього за чотири операції множення, якщо декілька разів піднести до квадрату отриманий результат, послідовно обчислюючи x2, x4, x8, x16.

Ця ж ідея, у цілому, може бути застосована до довільного значення n наступним чином. Запишемо n у вигляді числа у двійковій системі числення (видаливши нулі ліворуч). Потім замінимо кожну "1" парою символів SX, а кожен "0" - символом "S" і викреслимо крайню ліворуч пару символів "SX". Результат являє собою правило обчислення xn, у якому "S" трактується як операція піднесення до квадрату, а "X" - як операція множення на x. Наприклад, n = 23 має двійкове подання 10111. Таким чином, ми формуємо послідовність SXSSXSXSX, з якої видаляємо початкову пару SX для отримання кінцевого правила SSXSXSX. Це правило стверджує, що потрібно "піднести до квадрату, піднести до квадрату, помножити на x, піднести до квадрату, помножити на x, піднести до квадрату і помножити на x", тобто послідовно обчислити значення x2, x4, x5, x10, x11, x22, x23.

Вам потрібно для заданого n сформулювати відповідне правило швидкого піднесення числа x до степені xn.

Вхідні дані

Одне натуральне число n, яке не перевищує 2·109.

Вихідні дані

Виведіть рядок для правила піднесення числа x до степені xn.

Ліміт часу 1 секунда
Ліміт використання пам'яті 128 MiB
Вхідні дані #1
23
Вихідні дані #1
SSXSXSX
Автор Анатолій Присяжнюк
Джерело II етап Всеукраїнсьої олімпіади школярів 2012-2013, м. Бердичів