Один древнеримский торговец брал несколько раз ссуду в древнеримском банке.Каждый раз
Один древнеримский купец брал несколько раз ссуду в древнеримском банке.
Каждый раз банкир записывал размер выданной ссуды на листе пергамента, используя
римские числа. Но ввиду накладности пергамента запись выполнялась плотно и все числа
оказались записанными подряд, без разделителей. Когда торговец пришёл возвращать ссуду,
оказалось, что невозможно установить разбиение записи на отдельные числа.
К примеру, если на пергаменте записана строчка XIIV, её можно разбить на римские, её можно разбить на римские
числа различными методами, к примеру, XI + IV, её можно разбить на римские = 11 + 4 = 15 либо XII + V, её можно разбить на римские = 12 + 5 = 17,
вероятны и иные варианты разбиения.
Купец желает возвращать как можно меньше денег, потому он желает разбить строчку цифр
на корректные римские числа так, чтобы сумма всех чисел была как можно меньше.
Для вас необходимо решить задачку для последующих пяти строк.
VXIVVIX
CXLVLXC
XIXCXIXL
XCMLXCD
VLMIXCD
Запишите в ответе пять чисел (арабскими цифрами в десятичной системе счисления),
каждое число в отдельной строке ответы для данных 5 строк точно в таком же порядке.
К примеру, для строчки XIIV, её можно разбить на римские ответом будет число 15. Если вы не сможете дать ответ для
какой-либо строки, напишите в ответе для этой строчки число 0.
Управляла записи римских чисел
Цифра Тыщи Сотки 10-ки Единицы
1 M C X I
2 MM CC XX II
3 MMM CCC XXX III
4 CD XL IV
5 D L V
6 DC LX VI
7 DCC LXX VII
8 DCCC LXXX VIII
9 CM XC IX
Римскими цифрами можно записать целые числа от 1 до 3999. Число представляется
в виде суммы тыщ, сотен, 10-ов и единиц. Дальше из последующей таблицы берётся по
одному элементу, подходящему тысячам, соткам, десяткам, единицам ровно в таком
порядке.
Если число тыщ, сотен, 10-ов, единиц равно 0, то из соответствующего столбца
ничего не берётся. К примеру, число 1990 записывается, как 1000 + 900 + 90 = MCMXС.
L, ls, res = ('I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000,
['CD', 'XL', 'IV', 'CM', 'XC', 'IX'], 0)
L -- словарь значений римских цифр
ls -- Все сочетания "неполных чисел"
a = input()
for i in ls:
Умножаем их количество на цену в L
res += a.count(i) * (-1 * L[i[0]] + L[i[1]])
a = a.replace(i, '') Убираем из строчки, досчитывая остальные числа
Подсчитываем оставшиеся
for i in a:
res += L[i]
print(res)
Пример кода на Python 3.6.6.
-
Вопросы ответы
Статьи
Информатика
Статьи
Математика.
Разные вопросы.
Разные вопросы.
Математика.
Разные вопросы.
Математика.
Физика.
Геометрия.
Разные вопросы.
Обществознание.