3114 - abq

From Bitnami MediaWiki

Cerință[edit | edit source]

Alexandru a învățat azi despre numerele romane și cum se scriu acestea. Fiind distras de ce spuneau colegii a ajuns acasă și a realizat că nu știe cum să transforme un număr din cifre arabe în cifre romane. Deoarece a doua zi are un test numai din acest capitol, vă roagă să îl ajutați la transformarea unui număr N dat, scris cu cifre arabe în cifre romane.

Date de intrare[edit | edit source]

Fișierul cifre_romane.in conține un număr natural N scris cu cifre arabe.

Date de ieșire[edit | edit source]

Fișierul cifre_romane.out va conține scrierea cu cifre romane a lui N.

Restricții[edit | edit source]

  • 1≤N≤3999
  • cifrele romane sunt:
    • I=1
    • V=5
    • X=10
    • L=50
    • C=100
    • D=500
    • M=1000

Exemplu[edit | edit source]

cifre_romane.in

4

cifre_romane.out

IV

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3"> import sys

def convert_to_roman(num):

   """Converts a given number from Arabic numerals to Roman numerals."""
   roman_numerals = {
       1: "I",
       5: "V",
       10: "X",
       50: "L",
       100: "C",
       500: "D",
       1000: "M"
   }
   result = ""
   while num > 0:
       # Find the largest Roman numeral that is less than or equal to the current number
       for key in sorted(roman_numerals.keys(), reverse=True):
           if num >= key:
               result += roman_numerals[key]
               num -= key
               break
   return result

def main():

   """Reads input and converts numbers to Roman numerals."""
   num = int(input())
   # Check if the number is within the valid range
   if 1 <= num <= 3999:
       roman_numeral = convert_to_roman(num)
       print(roman_numeral)
   else:
       print("Numarul nu este in intervalul valid (1 ≤ N ≤ 3999).")

if __name__ == "__main__":

   sys.stdin = open("cifre_romane.in")
   sys.stdout = open("cifre_romane.out", "w")
   main()
   sys.stdin.close()
   sys.stdout.close()

</syntaxhighlight>