Написать код на Python
Напишите программу, которая переводит натуральное число N (1 ≤ N ≤ 3999) из римской системы счисления в десятичную. Входная строка содержит число N, записанное в римской системе счисления. Программа должна вывести десятичную запись числа N.
________________________________________
Входные данные:
MMMCMXCIX
IV
XXI
Исходные данные:
3999
4
21

Ответы

Ответ дал: Quverqu
1

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

Вас заинтересует