eolymp
bolt
Try our new interface for solving problems
Məsələlər

Шестнадцатиричные римские числа

Шестнадцатиричные римские числа

Рассмотрим традиционную "римскую" систему счисления и построим её обобщение. В обычной ("десятичной") римской записи используют \textbf{7} римских цифр: \textbf{I} = \textbf{1}, \textbf{V} = \textbf{5}, \textbf{X} = \textbf{10_10}, \textbf{L} = \textbf{50_10}, \textbf{C} = \textbf{100_10}, \textbf{D} = \textbf{500_10}, \textbf{M} = \textbf{1000_10}. Обычно римские цифры записывают в убывающем порядке и при этом значения цифр складываются (например, \textbf{MMX} (\textbf{2010}) интерпретируется как \textbf{1000} + \textbf{1000} + \textbf{10}). Если цифра с меньшим значением идёт перед цифрой с большим значением, меньшее значение вычитается из большего и прибавляется к общей сумме. Например, \textbf{MCMXLIV} равно \textbf{1944}. На конструкции с вычитание существуют следующие ограничения: \textbf{I} может идти только перед \textbf{V} и \textbf{X}, \textbf{X} может идти только перед \textbf{L} или \textbf{C}. За цифрами \textbf{V}, \textbf{L} и \textbf{D} могут идти только цифры с большим значением. Введём шестнадцатиричную римскую запись по следующим правилам: цифрам присваиваются значения \textbf{I} = \textbf{1}, \textbf{V} = \textbf{8}, \textbf{X} = \textbf{10_16}, \textbf{L} = \textbf{80_16}, \textbf{C} = \textbf{100_16}, \textbf{D} = \textbf{800_16}, \textbf{M} = \textbf{1000_16}. Ограничения на использование цифр такие же, как в "десятичной" римской системе, за исключением того, что запись типа \textbf{IIX} является корректной. Если какое-то число из-за этого может быть представлено разными способами, используется запись с меньшим количеством знаков, если количество знаков одинаково, то используется запись с меньшим количеством вычитаний (например, из записей \textbf{IIIIX} и \textbf{VIIII} для числа \textbf{C_16} выбирается вторая). Например, число \textbf{F_16} записывается как \textbf{IX_16}, а \textbf{5C8_16} - как \textbf{CCCDLXXXXV_16}. Напишите программу, которая производит операции над шестнадцатиричными римскими числами (сложение, вычитание, умножение). Гарантируется, что входные данные и результаты вычислений - целые положителтьые числа, не превышающие \textbf{4FFF_16}. \InputFile В первой строке входного файла задано целое число \textbf{N} (\textbf{0} < \textbf{N} ≤ \textbf{100}) - количество тестовых случаев. Каждый тестовый пример содержит задание в формате <\textbf{A}><\textbf{O}><\textbf{B}>. <\textbf{A}> и <\textbf{B}> - числа в шестнадцатиричной римской записи, <\textbf{O}> - одна из операций: +, -, *. Ни один текстовый пример не содержит пробелов. \OutputFile Для каждого примера выведите в отдельной строке результат вычислений, представленный в шестнадцатиричной римской записи.
Zaman məhdudiyyəti 1 saniyə
Yaddaşı istafadə məhdudiyyəti 64 MiB
Giriş verilənləri #1
1
XIIV+XXXXII
Çıxış verilənləri #1
XXXLV