1. Дилемма археологов
Ввод
Несколько строк, в каждой строке одно положительное целое число `N`, не превышающее 2147483648.
Вывод
Для каждого из целых чисел на входе вывести строку, содержащую наименьшее положительное целое число `E`, такое что первые цифры числа `2^E` (при этом нужно брать менее половины всех цифр этого числа) в точности совпадают с `N`, или если такого числа нет, то вывести сообщение "no power of 2".
2. Уравнения
Для нескольких уравнений с пропущенными арифметическими операциями вы должны расставить знаки +, - и * в выражении так, чтобы получилось правильное уравнение. Например, для уравнения "18=7 (5 3) 2" возможно одно решение "18=7+(5-3)*2". Операции не имеют приоритета и выполняются слева направо. Значение выражения в скобках вычисляется в первую очередь.
Ввод
Каждое уравнение записано на отдельной строке. Каждая строка начинается с положительного целого числа (меньше чем `2^30`), затем записан знак =. Затем записаны несколько (до 12) положительных целых чисел, образующих правую часть уравнения. (Произведение всех этих чисел меньше чем `2^30`.) Здесь может быть несколько скобок вокруг груп из одного или больше чисел. Общая длина строки не превышает 80 символов. Других ограничений на количество скобок нет. Между двумя числами может один или больше пробелов или скобок.
Строка содержащая только число 0 заканчивает ввод и не обрабатывается.
Вывод
Для каждого уравнения выведите "Equation #`n`:", где `n` – номер уравнения. Затем выедите одну строку с решением. Пробелы в решении не печатаются.
Если невозможно расставить знаки арифметических операций таким образом, чтобы сделать уравнение правильным, то вместо решения выведите строку "Impossible.".
Выведите одну пустую строку после каждого ответа.
Пример ввода
18 = 7 (5 3) 2
30 = 3 3 5
18 = 3 3 5
5 = 3 3
0
Пример вывода
Equation #1:
18=7+(5-3)*2
Equation #2:
30=3+3*5
Equation #3:
Impossible.
Equation #4:
Impossible.
3. Сложение обращенных чисел
Обращенное число это число, записанное арабскими цифрами в обратном порядке. Первая цифра становится последней и т.д. Например, 1245 превращается в 5421. Ведущие нули опускаются, из 1200 получится 21.
Напишите программу, которая складывает два обращенных числа и выдает их обращенную сумму.
Ввод
Ввод содержит `N` заданий. Первая строка ввода содержит одно целое положительное число `N` – число заданий. Далее следует `N` строк, содержащих по два целых положительных числа, разделенных пробелом – обращенные числа, которые необходимо сложить. Обращенные числа 21, 210 или 2100 соответствуют одному нормальному числу 12.
Вывод
Для каждого задания напечатайте строку, содержащую одно число – обращенную сумму двух обращенных чисел (без ведущих нулей!). Также у обращенной суммы не может быть нулей в конце.
Пример ввода
4
24 1
4358 754
305 794
1200 3
Пример вывода
34
1998
1
42