385
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=1V=5X=10L=50C=100D=500M=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];
}
Comentarii