2978 - Aur

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

Sursa: [1]

Enunt

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

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

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

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

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:

aur.in

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

12

Explicație

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

Exemplul 2:

aur.in

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

7

Explicație

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:

aur.in

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

9279

Explicație

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

# 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)