Натхненний цією відповіддю (наголос мій):
Ми пограємо в гру. Припустимо, у вас якесь число x . Ви починаєте з x, а потім можете додавати, віднімати, множувати або ділити на будь-яке ціле число, крім нуля. Ви також можете помножити на x . Ви можете робити ці речі стільки разів, скільки захочете. Якщо загальна сума стає нульовою, ви виграєте.
Наприклад, припустимо, що х дорівнює 2/3. Помножте на 3, потім відніміть 2. Результат дорівнює нулю. Ти виграв!
Припустимо, x дорівнює 7 ^ (1/3). Помножте на х , потім ще раз на х , потім відніміть 7. Ви виграєте!
Припустимо, x дорівнює √2 + √3. Тут не просто зрозуміти, як перемогти. Але виходить, що якщо помножити на x , відняти 10, помножити на x вдвічі і додати 1, то ви виграєш. (Це не повинно бути очевидним; ви можете спробувати це за допомогою калькулятора.)
Але якщо ви почнете з x = π, ви не зможете перемогти. Немає способу дістати від π до 0, якщо ви додаєте, віднімаєте, множите або ділите на цілі числа чи множите на π, незалежно від того, скільки кроків ви зробите. (Це також не повинно бути очевидним. Це дуже хитра штука!)
Числа на зразок √2 + √3, з яких можна виграти, називаються алгебраїчними . Числа на зразок π, з якими ви не можете перемогти, називаються трансцендентними.
Чому це цікаво? Кожне алгебраїчне число арифметично пов'язане з цілими числами, а виграшні кроки в грі показують вам, як так. Шлях до нуля може бути довгим і складним, але кожен крок простий і є шлях. Але трансцендентальні числа принципово відрізняються: вони не арифметично пов'язані з цілими числами простими кроками.
По суті, ви скористаєтесь кроками, використаними у наведеному вище питанні, щоб "виграти" гру за даний вклад.
Задавши справжню алгебраїчну константу x, перетворіть число в нуль, використовуючи такі дозволені операції:
- Додавання чи віднімання цілого числа.
- Перемножити або ділити на ненульове ціле число.
- Помножте на початкову константу
x.
Введення - це рядок, який може містити цілі числа, додавання, віднімання, множення, ділення, експоненціації (ваш вибір **або ^, експоненти використовуються для представлення коренів) та круглі дужки. Пробіли у введенні необов’язкові, але не у виході. Ви повинні вивести кроки, необхідні для отримання нульового результату, так що множення на 7один крок буде виведено як *7. Доступний пробіл та / або новий рядок.
Приклади
0 -> +0 (or any other valid, or empty)
5/7 + 42 -> -42 *7 -5 (or shorter: *7 -299)
2^(1/3) -> *x *x -2
5*(3**(1/4)) -> *x *x *x -1875
2^(1/2)+3^(1/2) -> *x -10 *x *x +1
Найкоротший код виграє.
x^4-10*x^2+1. Дивіться WolframAlpha

0повинні бути результати? Враховуючи помилки округлення та точність поплавця, я міг легко бачити проблемні ситуації ...