#1205
Pe vremea maurilor, transmiterea unor mesaje codificate între două persoane se făcea folosind un cifru numit nod. Cele două persoane alegeau în secret o poveste. Aceasta era scrisă într-o carte folosind litere mici și mari ale alfabetului englez, pe P pagini, numerotate de la 1 la P, fiecare conținând exact R rânduri, numerotate în cadrul fiecărei pagini de la 1 la R, iar fiecare rând fiind format din exact C cuvinte, numerotate în cadrul fiecărui rând de la 1 la C.
Un cuvânt al mesajului de transmis era codificat prin poziția sa în povestea aleasă de cei doi, folosind trei numere scrise cu cifre romane, ce indicau în ordine: numărul paginii, numărul rândului în cadrul paginii, respectiv al cuvântului în cadrul rândului.
Mesajul astfel codificat era scris pe trei linii. Pe prima linie erau scrise numerele paginilor, pe a doua linie numerele rândurilor, iar pe a treia linie erau scrise numerele de ordine ale cuvintelor.
Presupunem că mesajul este format din primul cuvânt de pe al cincilea rând al celei de a doua pagini și din al patrulea cuvânt de pe rândul al doilea al primei pagini. Mesajul putea fi transmis pe trei linii în modul următor:
II I (numerele paginilor)V II (numerele rândurilor)I IV (numerele cuvintelor)Cifrele romane sunt scrise cu majusculele M, D, C, L, X, V, I, iar valorile corespunzătoare lor sunt în ordine: 1000, 500, 100, 50, 10, 5, 1. Valoarea unui număr scris cu cifre romane se calculează parcurgând de la stânga la dreapta cifrele numărului astfel:
De exemplu pentru numărul MCDXLVI scris cu cifre romane, se obține valoarea 1446 în sistem zecimal, astfel: 1000-100+500-10+50+5+1, iar pentru numărul XXI scris cu cifre romane se obține valoarea 21 în sistemul zecimal astfel: 10+10+1.
Cunoscându-se textul poveștii ales de cei doi și mesajul codificat de ei scrieți un program care rezolvă următoarele două cerințe:
a) Rescrie mesajul codificat folosind scrierea cu cifre din sistemul zecimal.
b) Afișează toate cuvintele mesajului decodificat în ordinea în care acestea apar în poveste.
| Problema | Nod | Operații I/O |
nod.in/nod.out
|
|---|---|---|---|
| Limita timp | 0.5 secunde | Limita memorie |
Total: 2 MB
/
Stivă 2 MB
|
| Id soluție | #63659149 | Utilizator | |
| Fișier | nod.cpp | Dimensiune | 2.87 KB |
| Data încărcării | 13 Martie 2026, 08:29 | Scor/rezultat | 0 puncte |
nod.cpp: In function 'int numar(char*)': nod.cpp:26:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] while(poz<=strlen(c)) ^
| Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
|---|---|---|---|---|---|---|
| 0 | 0 secunde | Caught fatal signal 11 | 10 | 0 | ||
| 1 | 0 secunde | Caught fatal signal 11 | 10 | 0 | ||
| 2 | 0 secunde | Caught fatal signal 11 | 10 | 0 | ||
| 3 | 0 secunde | Caught fatal signal 11 | 10 | 0 | ||
| 4 | 0 secunde | Caught fatal signal 11 | 10 | 0 | ||
| 5 | 0 secunde | Caught fatal signal 11 | 10 | 0 | ||
| 6 | 0 secunde | Caught fatal signal 11 | 10 | 0 | ||
| 7 | 0 secunde | Caught fatal signal 11 | 10 | 0 | ||
| 8 | 0 secunde | Caught fatal signal 11 | 10 | 0 | ||
| 9 | 0 secunde | Caught fatal signal 11 | 10 | 0 | ||
| Punctaj total | 0 | |||||
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Nod face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.