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

Римские числа

Римские числа

Дана строка из символов '\textbf{I}', '\textbf{V}', '\textbf{X}', '\textbf{L}', '\textbf{C}', '\textbf{D}' и '\textbf{M}'. Требуется разбить её на несколько строк так, чтобы каждая получившаяся строка представляла собой корректное римское число, а сумма этих чисел была бы минимально возможной. Корректным римским числом будем называть число, которое получается по следующим правилам. Сначала выписывается символ '\textbf{M}' столько раз, сколько целых тысяч содержится в числе. Например, в числе \textbf{2045} содержится две целых тысячи, и его запись начнётся с символов "\textbf{MM}". После этого берём остаток от деления аго на \textbf{1000}. В зависимости от того, сколько целых сотен содержит результат, добавляем к римской записи следующую строку: "\textbf{C}" - для одной сотни, "\textbf{CC}" - для двух, "\textbf{CCC}", "\textbf{CD}", "\textbf{D}", "\textbf{DC}", "\textbf{DCC}", "\textbf{DCCC}", "\textbf{CM}" - для трёх, четырёх, ..., для девяти сотен соответственно. Остаток от деления числа \textbf{2045} на \textbf{1000} равен \textbf{45}. Целых сотен в нём нет, поэтому к римской записи ничего не добавляем. Далее берём остаток от деления на \textbf{100} и, в зависимости от количества десятков в результате, по тем же правилам добавляем к римской записи "\textbf{X}", "\textbf{XX}", "\textbf{XXX}", "\textbf{XL}", "\textbf{L}", "\textbf{LX}", "\textbf{LXX}", "\textbf{LXXX}" или "\textbf{XC}" (либо ничего не добавляем, если целых десятков нет). Соответственно, для числа \textbf{2045} мы должны добавить к римской записи строку "\textbf{XL}". После этого бер1тся остаток от деления на \textbf{10} исходного числа, и, в зависимости от результата, добавляется "\textbf{I}", "\textbf{II}", "\textbf{III}", "\textbf{IV}", "\textbf{V}", "\textbf{VI}", "\textbf{VII}", "\textbf{VIII}". "\textbf{IX}" - для \textbf{1}, \textbf{2}, ..., \textbf{9} соответственно, либо, в случае нулевого остатка, ничего не добавляется. для числа \textbf{2045} по этому правилу мы должны прибавить строку "\textbf{V}". В итоге для числа \textbf{2045} получаем римскую запись "\textbf{MMXLV}". Также на римские числа вводится дополнительное ограничение, что никакой символ в их записи не может повторяться более трёх раз подряд. То есть будем считать, что корректная римская запись существует только у чисел от \textbf{1} до \textbf{3999} включительно. \InputFile Во входном файле содержится одна непустая стирока длиной не более \textbf{20000} символов, состоящая из заглавных латинских букв, указанных в услоовии ('\textbf{I}', '\textbf{V}', '\textbf{X}', '\textbf{L}', '\textbf{C}', '\textbf{D}' и '\textbf{M}'). \OutputFile В выходной файл выведите одно число - минимально возможную сумму чисел.
Лимит времени 1 секунда
Лимит использования памяти 256 MiB
Входные данные #1
IVI
Выходные данные #1
5