Fişierul intrare/ieşire:coduri.in, coduri.outSursăONI 2007, clasa 9
AutorRoxana TamplaruAdăugată deDITzoneCAdrian Diaconu DITzoneC
Timp execuţie pe test0.2 secLimită de memorie20480 kbytes
Scorul tăuN/ADificultateN/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 an1 ... a1 si un cod c2 format din n2 valori bn2...b1, atunci codul c3 obtinut prin "adunarea" codurilor c1 si c2 va avea n3 valori dn3.. d1, cu proprietatile urmatoare:

  • n3 este maximul dintre n1 si n2
  • di =
    • ai + bi, pentru 1 ≤ i ≤ minim(n1,n2)
    • ai, pentru n2 + 1 ≤ i ≤ n1, daca minim(n1,n2) = n2
    • bi, pentru n1 + 1 ≤ i ≤ n2, daca minim(n1,n2) = n1

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.incoduri.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

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?

remote content