Revizia anterioară Revizia următoare
Fişierul intrare/ieşire: | coduri.in, coduri.out | Sursă | ONI 2007, clasa 9 |
Autor | Roxana Tamplaru | Adăugată de | |
Timp execuţie pe test | 0.1 sec | Limită de memorie | 20480 kbytes |
Scorul tău | N/A | Dificultate | N/A |
Vezi solutiile trimise | Statistici
Coduri
Intorcandu-se de la scoala in ziua in care a aflat cum se face inmultirea numerelor, Gigel a auzit la televizor urmatoarea afirmatie: „Pentru a face avere, nu trebuie sa aduni bani in viata, ci trebuie sa-i inmultestiâ€.
Toate acestea l-au pus pe ganduri, asa ca s-a hotarat sa inventeze propriul „sistem de codificare†pentru numere reale mai mari decat 0 care sa aiba urmatoarele proprietati:
fiecare numar va fi codificat sub forma unui sir de valori intregi (pozitive si/ sau negative)
daca un numar real x are codul cx si un numar real y are codul cy , atunci numarul real rezultat prin inmultirea lui x si y trebuie sa aiba codul obtinut prin „adunarea†codurilor cx si cy .
daca un numar real x se poate scrie ca produs de numere y1, y2, ..., yk, atunci codul lui x se obtine prin „adunarea†codurilor numerelor y1, y2, ..., yk.
Consideram un cod c1 format din n1 valori .. a1 si un cod c2 format din n2 valori ..b1 , atunci codul c3 obtinut prin „adunarea†codurilor c1 si c2 va avea n3 valori .. d1 , cu proprietatile urmatoare:
n3 este maximul dintre n1 si n2
di =
Cerinta
Dandu-se N numere reale mai mari strict decat 0, sa se scrie codificarea acestora in sistemul inventat de Gigel.
Date de intrare
Fisierul de iesire coduri.in va contine:
- pe prima linie din fisier se afla numarul N de numere reale
- pe urmatoarele N linii cele N numere reale, fiecare pe cate o linie.
Date de iesire
Fisierul de iesire coduri.out va contine N linii: pe linia i (i intre 1 si N) : numarul de valori folosite pentru codificarea numarului cu indicele i din fisierul de intrare, urmat de un spatiu si apoi valorile ce alcatuiesc codul numarului, separate doua cate doua printr-un singur spatiu.
Restrictii
- 2 ≤ N ≤ 18
- Separatorul intre partea intreaga si partea zecimala este virgula.
- Orice numar are dupa virgula cel mult 5 cifre.
- Valorile din codurile numerelor din fisierele de test trebuie sa fie cuprinse in intervalul [-106, 106].
- Partea intreaga a fiecarui numar real este o valoare mai mica sau egala cu 20000.
- Toate numerele din fisierele de test sunt strict pozitive si distincte doua cate doua.
- Numarul maxim de valori utilizat pentru codificarea unui numar este 2500.
- Daca exista mai multe solutii de codificare, se va afisa una singura.
- Nu trebuie sa existe doua numere diferite cu aceeasi codificare.
- 40% din teste vor contine numai numere intregi, 30% din teste vor contine numere intregi si numere reale fara perioada si 30% din teste vor contine numere intregi si numere reale cu si fara perioada.
Exemplu
coduri.in | coduri.out |
---|---|
8 10 2 5 0,3 7 2,1 1,(7) 1,2(34) | 2 1 1 3 -1 0 1 3 1 1 0 3 2 1 0 3 -1 2 1 3 1 3 1 2 1 11 2 1 2 |
Explicatie
10=2*5, iar suma codurilor pentru 2 si 5, determina codul lui 10
2,1=7*0,3, iar suma codurilor pentru 7 si 0,3 determina codul lui 2,1