Множення в початковій школі#3105

Множення в початковій школі

1 секунда
64 мегабайти
Складна

Освітня компанія All Computer Math (ACM) має розділ про множення цілих чисел. Вона хоче відображати обчислення у традиційному шкільному форматі, як у наступному прикладі обчислення 432 \times 5678:

  432
× 5678
-------
 3456
 3024
 2592
2160
-------
2452896

Зверніть увагу, що остаточний добуток виводиться без початкових пробілів, але початкові пробіли потрібні на деяких інших рядках для збереження вирівнювання. За нашими регіональними правилами, у жодному рядку не повинно бути пробілів у кінці рядка. Рядки з тире мають довжину, яка відповідає остаточному добутку.

Як спеціальний випадок, коли одна з цифр другого множника є нулем, вона породжує лише один у часткових відповідях, і наступний частковий результат повинен бути на тому ж рядку, а не з нового рядка. Наприклад, розглянемо добуток 200001 \times 90040:

  200001
× 90040
-----------
  8000040
180000900
-----------
18008090040

Найменш значуща цифра другого множника — , тому у найправішому стовпчику першого часткового добутку з'являється . Замість переходу на новий рядок, частковий добуток 4 \times 200001 розміщується на тому ж рядку, що й цей . Третя та четверта справа цифри другого множника також нулі, кожна з яких призводить до у другому частковому добутку на тому ж рядку, що й 9 \times 200001.

В останньому особливому випадку, якщо є лише один рядок у частковій відповіді, це є повна відповідь, тож немає потреби обчислювати суму. Наприклад, 246 \times 70 має бути відформатовано так:

  246
×  70
-----
17220

Ваше завдання — створювати такі виводи для цих множень.

Вхідні дані

Вхід містить один або кілька наборів даних. Кожен набір даних складається з двох додатних цілих чисел в одному рядку, які задають множники у потрібному порядку. Жодне з чисел не матиме більш ніж цифр і жодне не матиме початкових нулів. Після останнього набору даних слідує рядок, що містить лише .

Вихідні дані

Для кожного набору даних виведіть рядок-мітку, що містить "Problem ", а також номер задачі, після чого — повністю оформлене множення відповідно до описаних правил форматування.

Увага: Стандартний тип int не здатний правильно обробляти -значні числа. Слід використовувати -бітний тип (наприклад, long у Java або long long у C++).

Приклади

Приклад 1

Loading
Loading