Завдання № 15
відбірково-тренувальних зборів
команди міста Києва

1. Лишок

Максимальна оцінка: 48 балів
Обмеження на час: 0,15 сек.
Обмеження на пам’ять: 4 MБ
Вхідний файл: remain.in
Вихідний файл: remain.out
Програма: remain.*

Для зручності запису умови позначимо a b через a ^ b.

Завдання
Створіть програму, яка обчислить лишок від ділення на a0 числа

a1^ (a2^ (a3^…(an – 2^ (an – 1^ an))…)).

Вхідні дані
Файл містить у вказаному порядку натуральні числа n, a0, a1, a2, …, an у межах від 1 до 216, n ≤ 9.

Вихідні дані
Файл має міститти шуканий лишок.

Приклад

remain.inremain.out
5 4 3 5 7 9 113

2. Множення

Максимальна оцінка: 56 балів
Обмеження на час: 0,15 сек.
Обмеження на пам’ять: 4 MБ
Вхідний файл: cripto.in
Вихідний файл: cripto.out
Програма: cripto.*

Завдання
Створіть програму, яка дешифрує запис дії множення.

Вхідні дані
Файл містить запис виконання дії множення двох натуральних чисел у стовпчик, з якого вилучено знаки множення і додавання, а більшість цифр замінено на символ «*». Результат множення першого співмножника на цифру 0 другого співмножника не відображено. Кожен рядок файлу має не більше, ніж 60 символів, а пропуски є лише перед зашифрованим записом чисел.

Вихідні дані
Файл має містити десяткові записи співмножників. Вхідні дані ґарантують: кількість розв'язків не перевищує 1. Якщо розв'язку немає, то файл має містити запис: «No solution!»

Приклад

сripto.inсripto.out
   ***
   *7*
  ----
  ****
  ***
*2**
------
*****5
135 979