Написать код на Python
Напишите программу, которая переводит натуральное число N (1 ≤ N ≤ 3999) из римской системы счисления в десятичную. Входная строка содержит число N, записанное в римской системе счисления. Программа должна вывести десятичную запись числа N.
________________________________________
Входные данные:
MMMCMXCIX
IV
XXI
Исходные данные:
3999
4
21
Ответы
def roman_to_decimal(s):
# Создаем словарь, который сопоставляет римские цифры и их значения
roman_dict = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
# Инициализируем переменные для хранения десятичного значения и предыдущего значения
decimal = 0
prev_value = 0
# Проходим по каждой цифре римского числа
for c in s:
# Получаем значение цифры из словаря
current_value = roman_dict[c]
# Если значение предыдущей цифры меньше значения текущей цифры, то вычитаем удвоенное значение предыдущей цифры
if prev_value < current_value:
decimal -= 2 * prev_value
# Добавляем значение текущей цифры к десятичному значению
decimal += current_value
# Сохраняем текущее значение для использования на следующей итерации
prev_value = current_value
return decimal
# Пример использования функции
print(roman_to_decimal("MMMCMXCIX")) # Output: 3999
print(roman_to_decimal("IV")) # Output: 4
print(roman_to_decimal("XXI")) # Output: 21