.campion
conectare | înregistrare | căutare
Pagina principală » Probleme » super

ultima problemă
grupă: mică
sursă: OMI 2016
ultimul articol
autor: Prof. Radu Vişinescu
ultimul software
autor: Prof. Emanuela Cerchez
.campion
super


Timp maxim de executie/test:
0.1 secunde
Memorie totala disponibila/stiva:
16 MB/1 MB

Ati auzit legenda lui Midas care transforma in aur tot ce atingea? Cum Midas nu avea ce face cu tot aurul, el a inceput sa-l vanda, obtinand pe el sume uriase de bani. Din pacate, numerele romane, folosite pe vremea lui exprimau dificil numere mari, de ordinul milioanelor. De aceea, Midas a fost nevoit sa inventeze numere noi, pe care le-a numit numere super-romane. Numerele super-romane verifica regulile obisnuite de formare a numerelor romane.
Sa consideram simbolurile obisnuite romane si reprezentarea lor zecimala:

I = 1   V = 5    X = 10    L = 50    C = 100    D = 500    M = 1000

Simbolurile I, X, C, M pot fi scrise consecutiv in numar de maxim 3. Celelalte simboluri nu se pot repeta consecutiv. Simbolurile sunt scrise fara spatii intre ele, in ordinea descrescatoare a valorilor:

CCLXVIII= 100+100+50+10+5+1+1+1 = 268

Uneori insa, un simbol I, X, C sau M este plasat inaintea unuia dintre cele doua simboluri de valori imediat superioare (I inainte de V sau X, X inainte de L sau C, etc). In acest caz, valoarea simbolului mai mic este scazuta din valoarea simbolului pe care il preceda:

IV = 5-1 = 4
IX = 10-1 = 9
XL= 50-10 = 40

Numere compuse insa, ca XD, IC sau XM nu sunt corecte, deoarece simbolul din fata are valoare mult prea mica decat a celui care il urmeaza. Astfel:

-  pentru XD (490 scris gresit) se foloseste reprezentarea CDXC
-  pentru IC (99 scris gresit) se foloseste XCIX
-  pentru XM (990 scris gresit) se foloseste CMXC

Din nefericire, numere mari, cum ar fi 10000 s-ar reprezenta MMMMMMMMMM, deci foarte dificil. De aceea tabela numerelor romane se extinde:

I = 1   L = 50    M = 1000   R = 50000    U = 1000000    N = 50000000
V = 5   C = 100   P = 5000   S = 100000   B = 5000000    Y = 100000000
X = 10  D = 500   Q = 10000  T = 500000   W = 10000000   Z = 500000000

In acest fel, pastrand regulile obisnuite de scriere, se pot reprezenta si numere de ordinul sutelor de milioane.

Cerinta

Scrieti un program care citeste un numar natural dintr-un fisier si il converteste in numarul echivalent in forma super-romana.

Date de intrare

Pe prima linie a fisierului de intrare super.in se gaseste numarul natural n.

Date de iesire

Pe prima linie a fisierului de iesire super.out se gaseste numarul n in forma super-romana.

Restrictii

  • 1 <= n < 2000000000

Exemple

super.in super.out super.in super.out
18 XVIII 12345678 WUUSSSQRPDCLXXVIII

prof. Marinel Serban
Liceul de Informatica “Gr. C. Moisil” Iasi

propunător: Prof. Emanuela Cerchez
emanuela.cerchez@gmail.com
Articole recomandate
Probleme recomandate
De la .campion 2004: cifre1, apm, bile1, factk, schimb, caini, secvreg, descfib, maraton, masina1, otilia, multiplu, tub, pasune, remi, m01, robot1, na, sir23, paralel, zaruri, bomboane, dotnet, divizor, tren1, joc5, tvshow, pachete, soldati1, echipe, omizi, suma1, aedaro, concurs1, windows, comb, renju, latime, vectori, ghici, subperm, puncte, mere1, spirala, distanta, piloti
De acelaşi autor: premii, finala, fractii, trei, manevre, nrcuv, an, vopsea, opmat, tramvai, bipal, kpal, sarpe, replace, factori, barca, perechi, grupe, cod, reactii, factura, decript, trenuri, holo, cifre, firma, tribile, mesaj, tricouri, pajura, monede, programs, fry, repeat, red, pavaj, bacan, nrbinar, invest, cutie2, loc, depou, nr3, zid, felinare, sir3, sqr, carte, labirint, stea, count, evaluare, schimb, zaruri, vectori, spirala, desen1, rima, ceas1, romane, sms, bac, excursia, joc7, furnici, munte1, cezar, marcare, excursie1, culmi, sume1, schi, nr4, fractie, cod3, medii, tren3, top, sant1, imagine, ocr, perfect, pluton, reforma, alee, ceas2, paritate, borcane, aranjare, comoara1, culmi1, reactivi, submult, sablon1, sir8, sume2, dansatori, smith, tom, matriosca, asociativ, control1, calorii, immortal, concat, mat, cubinvers, mine, divizori, cheie, stelar, joct, minmax, cladire, adunscad, razboi, ore, oras1, sumprod, prisme, operatii1, lgdrum, unupatru, chibrituri, extraprime, prieten, rebus1, grindina, opmult, betisoare, antitero, clase, pagini, ornament, ordine, spioni1
Despre structura repetitiva: cifre1, schimb, jeton, descfib, taxe, romane, mobile, cuburi3, tzigla, morse, powerpuff, multimi, ucif, tabel, ocr, numere7, cifre2, piramida, vraji, reforma, cartonas, cabina, case, desen2, exponent, cifre3, concurs3, joc13, reactivi, vanatoare, submult, paranteze, tort, copaci1, ogorul, puncte3, efort, muzeu, smith, biliard, palc, prod3, fazanr, cadouri, bursa, meteo, prodmax, zar, tren4, lego, maraton1, cluburi, domino1, jump, alo, cifra1, case1, brazi, greiere, divizori, pitag, porumb, secv9, divk, rachete, pin, sumacifre, aritm, psp, triplu, triunghi3, cmmdcsecv, ssmax, ape, furnici1, domino2, acoperire1, ore, pegals, b2k, sumdivprod, subsecvmax, dale, bancomat, sume4, alice, porumb1, albine2, culegere, stele1, medalion, cifreco, meteo1, unupatru, xyz, vistiernic, chibrituri, bete1, greieri, interviu, prieten, prize, conturi, numere12, martisoare, piramide, pagini, punctul, tablita, pavare1, ordine, covor1, speciale, echer, numere13
surse trimise | ajutor