ConcursC++17

babilon

Babilonienii au dezvoltat un sistem pozițional de scriere a numerelor, în care orice număr natural se poate reprezenta utilizând semnele:

SemnCifra
Figura 1 din enunțul original al problemei babilon.Figura 1 din enunțul original al problemei babilon.Mărește schema ↗unu
Figura 2 din enunțul original al problemei babilon.Figura 2 din enunțul original al problemei babilon.Mărește schema ↗zece

Valorile kk din {22, 33, ......, 99} se obțin scriind semnul pentru unu de kk ori
Exemplu: scrierea babiloniană a lui 33 este
Figura 3 din enunțul original al problemei babilon.Figura 3 din enunțul original al problemei babilon.Mărește schema ↗

Numerele 1111, 1212, …\dots, 5959 se obțin ca succesiuni de semne urmate de semne
Exemplu: 4343 se reprezintă ca
Figura 4 din enunțul original al problemei babilon.Figura 4 din enunțul original al problemei babilon.Mărește schema ↗
Sistemul folosește gruparea unităților câte șaizeci. Astfel, pentru a scrie numărul șaizeci se folosește același semn ca pentru unu, dar valoarea sa este dată de poziția în care se găsește semnul.
Babilonienii nu foloseau cifra 00. Pentru poziţionarea corectă a semnelor se utiliza spațiu:
Figura 5 din enunțul original al problemei babilon.Figura 5 din enunțul original al problemei babilon.Mărește schema ↗

Exemple:

NumărReprezentare
6060Figura 6 din enunțul original al problemei babilon.Figura 6 din enunțul original al problemei babilon.Mărește schema ↗
36003600Figura 7 din enunțul original al problemei babilon.Figura 7 din enunțul original al problemei babilon.Mărește schema ↗

Se codifică scrierea babiloniană a unui număr astfel:

CifrăSemn
11Figura 8 din enunțul original al problemei babilon.Figura 8 din enunțul original al problemei babilon.Mărește schema ↗
22Figura 9 din enunțul original al problemei babilon.Figura 9 din enunțul original al problemei babilon.Mărește schema ↗
33Figura 10 din enunțul original al problemei babilon.Figura 10 din enunțul original al problemei babilon.Mărește schema ↗

Exemple:

Scrierea babilonianăCodificarea scrierii babilonieneValoarea zecimală a numărului
Figura 11 din enunțul original al problemei babilon.Figura 11 din enunțul original al problemei babilon.Mărește schema ↗131113111⋅60+2=621 \cdot 60 + 2 = 62
Figura 12 din enunțul original al problemei babilon.Figura 12 din enunțul original al problemei babilon.Mărește schema ↗12121⋅60+10=701 \cdot 60 + 10 = 70
Figura 13 din enunțul original al problemei babilon.Figura 13 din enunțul original al problemei babilon.Mărește schema ↗122111112211111⋅60+20+4=841 \cdot 60 + 20 + 4 = 84
Figura 14 din enunțul original al problemei babilon.Figura 14 din enunțul original al problemei babilon.Mărește schema ↗123111112311111⋅60⋅60+10⋅60+3=42031 \cdot 60 \cdot 60 + 10 \cdot 60 + 3 = 4203

Cerință

Dându-se un număr natural nn și un șir de nn cifre dintre {11, 22, 33}, reprezentând codificarea scrierii babiloniene a unui număr natural, să se determine:

  1. numărul maxim de cifre 11 aflate pe poziții consecutive în codificarea scrierii babiloniene date;
  2. numărul natural din sistemul zecimal corespunzător scrierii babiloniene date.

Date de intrare

Fișierul de intrare babilon.in va conține:

  • pe prima linie un număr natural pp (1≤p≤21 \leq p \leq 2);
  • pe a doua linie un număr natural nn;
  • pe a treia linie nn cifre separate prin câte un spațiu, reprezentând codificarea scrierii babiloniene a unui număr natural.

Date de ieșire

Dacă valoarea lui pp este 11, atunci se va rezolva numai punctul 11 din cerință. În acest caz, fişierul de ieşire babilon.out va conţine pe prima linie un număr natural reprezentând numărul maxim de cifre 11 aflate pe poziții consecutive în codificarea scrierii babiloniene date.
Dacă valoarea lui pp este 22, atunci se va rezolva numai punctul 22 din cerință. În acest caz, fişierul de ieşire babilon.out va conţine pe prima linie numărul natural corespunzător scrierii babiloniene date.

Restricţii şi precizări

  • 2≤n≤1092 \leq n \leq 109;
  • se garantează faptul că numărul de cifre al rezultatului de la punctul 22 (numărul zecimal) este mai mic decât 2020;
  • 30%30\% din teste vor avea pe prima linie valoarea 11, iar restul de 70%70\% din teste vor avea pe prima linie valoarea 22.

Exemplul 1

babilon.in

1
8
1 1 3 2 1 1 1 2

babilon.out

3

Explicație

1 1 3 21 \ 1 \ 3 \ 2 1 1 1 22
Cea mai lungă secvență de cifre 11 are lungimea 33.

Exemplul 2

babilon.in

2
7
1 1 3 2 1 1 1

babilon.out

7213

Explicație

Figura 15 din enunțul original al problemei babilon.Figura 15 din enunțul original al problemei babilon.Mărește schema ↗
22 se înmulțește de două ori cu 6060 (o dată pentru că este urmat de spațiu și încă o dată pentru că precede o grupă care începe cu semnul pentru zece), apoi se adună valoarea 1313.
2⋅60⋅60+10+3=72132 \cdot 60 \cdot 60 + 10 + 3 = 7213

Exemplul 3

babilon.in

2
9
1 1 1 2 1 1 2 2 1

babilon.out

11541

Explicație

Figura 16 din enunțul original al problemei babilon.Figura 16 din enunțul original al problemei babilon.Mărește schema ↗
33 se înmulțește cu 6060 de două ori pentru că este precedat de două grupe care încep cu semnul pentru zece, apoi se adună 1212 înmulţit cu 6060 şi la final se adună 2121.
3⋅60⋅60+12⋅60+21=115413 \cdot 60 \cdot 60 + 12 \cdot 60 + 21 = 11541

Sursă și autori

ONI 2014, clasele 5. Florentina Ungureanu.

Enunț din Kilonova, sub licența CC-BY-NC-SA-4.0, conform politicii sursei. Adaptări de prezentare și tipografie. Exemplele, formulele și figurile originale sunt păstrate.

RÂNDUL TĂU

Trimite o soluție

Editor de cod

Setul original de teste și regulile de punctare sunt în curs de verificare. Trimiterea pentru evaluare va fi disponibilă după această verificare.

Se verifică autentificarea…

Un pas, apoi următorul.Înapoi sus ↑