printРабочее место участника

printЗадачи

877. Римская арифметика

Ограничения: время – 2s/4s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Археолог обнаружил документ с расчетами по вычислению поставок в войска Цезаря. Расчеты выглядели как выражения `A+B=C`, где `A`, `B` и `C` – некоторые числа, записанные римскими цифрами. К сожалению археолога, время не пощадило документ и некоторые символы невозможно разобрать. Напишите программу, которая поможет археологу выяснить, какие вычисления были сделаны римским интендантом.
Для записи числа римскими цифрами используются прописные латинские буквы: буква I обозначает 1, V – 5, X – 10, L – 50, C – 100, D – 500, M – 1000. Числа записываются при помощи повторения этих цифр. В правильной записи сначала пишется число тысяч, затем сотен, затем десятков и, наконец, единиц. Во избежание четырёхкратного повторения одной и той же цифры сначала пишется эта цифра, а затем цифра, при вычитании из которой этой цифры получается нужное число единиц, десятков или сотен. (например, IX означает 9, XL – 40). Число 1984 записывается римскими цифрами следующим образом MCMLXXXIV.
В первой строке входного файла содержатся одна строка длиной не более 50 символов, содержащая буквы I, V, X, L, C, D, M и символы '+', '=' и '?'. Символ '?' используется для замены тех символов и цифр, которые оказалось невозможно разобрать. Известно, что слагаемые в выражении были в диапазоне от 1 до 1000 включительно.
В первой строке выходного файла вывести любой вариант вычислений, который соответствует строке во входном файле. Если нет ни одного варианта – вывести сообщение "ERROR" (без кавычек).

Пример ввода

XX?X????IV=L???I

Вывод для примера

XXIX+XXXIV=LXIII
loading