Складний пристрій
Вам дано два натуральних числа і , де є простим числом.
У вас є загадковий обчислювач, що містить комірки пам'яті. Кожна комірка може зберігати число від до . Обчислювач підтримує дві інструкції: додавання і піднесення до степеня . Обидві операції виконуються за модулем .
Комірки пам'яті пронумеровані від до . Спочатку комірки і містять числа і відповідно . Усі інші комірки заповнені одиницями.
Ви не маєте прямого доступу до значень і , і їх точні значення невідомі. Ваше завдання — написати програму, яка, використовуючи доступні інструкції, обчислює добуток за модулем в одній з комірок. Програма повинна працювати для всіх можливих і .
Інструкція додавання обчислює суму значень у двох комірках і записує результат у третю. Ця інструкція записується як "+ e1 e2 to"
, що означає, що сума значень у комірках e1
і e2
буде записана в комірку to
. Будь-які з номерів e1
, e2
, to
можуть збігатися.
Друга інструкція обчислює -ту степінь числа в комірці і записує результат в іншу комірку. Ця інструкція записується як "^ e to"
. Значення e
і to
можуть збігатися, у цьому випадку значення в комірці буде перезаписано.
Остання інструкція — це спеціальна інструкція повернення, яка записується як "f target"
. Це означає, що результат mod отримано в комірці target. Ця інструкція повинна бути останньою.
Знайдіть послідовність інструкцій, яка обчислює mod і використовує не більше інструкцій (включаючи інструкцію повернення).
Гарантовано, що за даних обмежень рішення існує.
Вхідні дані
Єдиний рядок містить числа і , розділені пробілом просте .
Вихідні дані
Виведіть послідовність інструкцій, по одній інструкції в рядку. Програма повинна містити не більше рядків. Остання інструкція повинна бути інструкцією повернення.
Приклади
У цій задачі відсутні тести з умови. Приклад виводу наведено нижче. Зверніть увагу, що цей вивід не є рішенням ні для якого тесту, і потрібен лише для того, щоб продемонструвати формат виводу.
+ 1 1 3 ^ 3 3 + 3 2 2 + 3 2 3 ^ 3 1 f 1
Нижче наведено покроковий опис роботи програми:
комірка 1 | комірка 2 | комірка 3 | |
початково | |||
| |||
| |||
| |||
| |||
|
Нехай і . Оскільки при і повернений результат дорівнює mod , програма була оцінена як невірна.