Cerință
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
Fișierul cifre_romane.in
conține un număr natural N
scris cu cifre arabe.
Date de ieșire
Fișierul cifre_romane.out
va conține scrierea cu cifre romane a lui N
.
Restricții
1≤N≤3999
- cifrele romane sunt:
I=1
V=5
X=10
L=50
C=100
D=500
M=1000
Exemplu
cifre_romane.in
4
cifre_romane.out
IV
#include <bits/stdc++.h> using namespace std; ifstream cin("cifre_romane.in"); ofstream cout("cifre_romane.out"); char cif_rom[1001] , rez[256]; int n , cnt = 1 , t; int main() { cin >> n; cif_rom[1] = 'I'; cif_rom[5] = 'V'; cif_rom[10] = 'X'; cif_rom[50] = 'L'; cif_rom[100] = 'C'; cif_rom[500] = 'D'; cif_rom[1000] = 'M'; while(n != 0) { int cif = n % 10; if(cif == 1) { rez[++t] = cif_rom[cif * cnt]; } else if(cif == 2) { rez[++t] = cif_rom[cnt]; rez[++t] = cif_rom[cnt]; } else if(cif == 3) { rez[++t] = cif_rom[cnt]; rez[++t] = cif_rom[cnt]; rez[++t] = cif_rom[cnt]; } else if(cif == 4) { rez[++t] = cif_rom[5 * cnt]; rez[++t] = cif_rom[cnt]; } else if(cif == 5) { rez[++t] = cif_rom[5 * cnt]; } else if(cif == 6) { rez[++t] = cif_rom[cnt]; rez[++t] = cif_rom[5 * cnt]; } else if(cif == 7) { rez[++t] = cif_rom[cnt]; rez[++t] = cif_rom[cnt]; rez[++t] = cif_rom[5 * cnt]; } else if(cif == 8) { rez[++t] = cif_rom[cnt]; rez[++t] = cif_rom[cnt]; rez[++t] = cif_rom[cnt]; rez[++t] = cif_rom[5 * cnt]; } else if(cif == 9) { rez[++t] = cif_rom[10 * cnt]; rez[++t] = cif_rom[cnt]; } n /= 10; cnt *= 10; } for(int i = t ; i >= 1 ; i--) cout << rez[i]; }