2978 - Aur

From Bitnami MediaWiki
Revision as of 13:07, 20 May 2023 by Pop Giulia (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Sursa: [1]

Enunt[edit | edit source]

După ce au mers împreună prin lume, Păcală și Tândală au strâns o căruță plină de bănuți de aur, iar acum îi răstoarnă pe toți în curtea casei și îi împart în N grămezi. Păcală numără bănuții din fiecare grămadă și îi dictează lui Tândală N numere naturale pe care acesta trebuie să le scrie în ordine pe o tăbliță. După ore bune de muncă, Păcală constată că Tândală a scris pe un singur rând, în ordine, de la stânga la dreapta, toate numerele dictate de el, dar lipite unul de altul. Acum pe tăbliță e doar un șir lung de cifre. Ce să facă Păcală acum?

Cerința[edit | edit source]

Cunoscând cele N numere naturale dictate de Păcală, scrieți un program care să determine: 1. numărul cifrelor scrise pe tăbliță de Tândală; 2. ce-a de-a K-a cifră de pe tăbliță, în ordine de la stânga la dreapta; 3. cel mai mare număr ce se poate forma cu exact P cifre alăturate de pe tăbliță, considerate în ordine de la stânga la dreapta.

Date de intrare[edit | edit source]

Fișierul de intrare aur.in conţine: - pe prima linie un număr natural C care reprezintă numărul cerinței și poate avea valorile 1, 2 sau 3. - pe cea de-a doua linie un număr natural N dacă cerința este 1, sau două numere naturale N și K (despărțite printr-un spațiu) dacă cerința este 2, sau două numere naturale N și P (despărțite printr-un spațiu) dacă cerința este 3. - pe cea de-a treia linie, N numere naturale despărțite prin câte un spațiu, ce reprezintă, în ordine, numerele pe care Păcală i le dictează lui Tândală.

Date de ieșire[edit | edit source]

Fișierul de ieșire aur.out va conține pe prima linie un singur număr natural ce reprezintă rezultatul determinat conform fiecărei cerințe.

Restricții și precizări[edit | edit source]

1 ≤ N ≤ 100.000 și 1 ≤ K ≤ 900.000; Se garantează ca există cel puțin K cifre scrise pe tăbliță. 1 ≤ P ≤ 18; Se garantează ca există cel puțin P cifre scrise pe tăbliță. toate numere dictate de Păcală sunt nenule și au cel mult 9 cifre fiecare; Pentru rezolvarea corectă a primei cerințe se acordă 20 de puncte, pentru rezolvarea corectă a celei de-a doua cerințe se acordă 30 de puncte, iar pentru rezolvarea corectă a celei de-a treia cerințe se acordă 40 de puncte. În concurs s-au acordat 10 puncte din oficiu. Aici se acordă pentru exemplele din enunț.

Exemplul 1:[edit | edit source]

aur.in

1 7 25 9 13 459 2 79 9 aur.out

12

Explicație[edit | edit source]

Se rezolvă cerința 1. Tândală a scris pe tăbliță: 259134592799. Numărul cifrelor scrise de Tândală este 12.

Exemplul 2:[edit | edit source]

aur.in

2 7 10 25 9 13 459 2 79 9 aur.out

7

Explicație[edit | edit source]

Se rezolvă cerința 2. N are valoarea 7 și K are valoarea 10. Pe tăbliță este scris: 259134592799, cea de-a zecea cifră este 7.

Exemplul 3:[edit | edit source]

aur.in

3 7 4 25 9 13 459 2 79 9 aur.out

9279

Explicație[edit | edit source]

Se rezolvă cerința 3. N are valoarea 7 și P are valoarea 4. Tândală a scris pe tăbliță: 259134592799. Cel mai mare număr format din patru cifre este 9279.

Încărcare soluție[edit | edit source]

<syntaxhighlight lang="python" line>

  1. Citim cerința și datele de intrare

cerinta = int(input()) n, m = map(int, input().split()) numere = list(map(int, input().split()))

if cerinta == 1:

   # Cerința 1: numărul de cifre din șirul de numere
   print(len("".join(map(str, numere))))

elif cerinta == 2:

   # Cerința 2: cifra de pe poziția m
   cifra_curenta = 0
   for numar in numere:
       for cifra in str(numar):
           cifra_curenta += 1
           if cifra_curenta == m:
               print(cifra)
               break
       if cifra_curenta == m:
           break

elif cerinta == 3:

   # Cerința 3: cel mai mare număr format din P cifre
   p = m
   numar_maxim = 0
   for i in range(len(numere) - p + 1):
       numar_curent = int("".join(map(str, numere[i:i+p])))
       numar_maxim = max(numar_maxim, numar_curent)
   print(numar_maxim)

</syntaxhighlight>