eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Шістнадцяткові римські числа

Шістнадцяткові римські числа

Розглянемо традиційну "римську" систему числення і побудуємо її узагальнення. У звичайному ("десятковому") римському запису використовують \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 Для кожного прикладу виведіть у окремому рядку результат обчислень, поданий у шістнадцятковому римському запису.
Ліміт часу 1 секунда
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
1
XIIV+XXXXII
Вихідні дані #1
XXXLV