3566 - Templu

De la Universitas MediaWiki

Cerinţa

Copa ajunse în Orintia unde există un templu cu mai multe nivele, baza fiind un pătrat de lungime L. Primul nivel are înălţimea egală cu N, iar celelalte nivele au înălţimea mai mare cu o unitate faţă de cel anterior. Spre exemplu pentru L = 5 şi N = 3 din stâncă răsări templul (imagine din avion şi de la sol):

3 3 3 3 3 3 4 4 4 3 3 4 5 4 3 3 4 4 4 3 3 3 3 3 3


     5
   4 4 4
 3 3 3 3 3

Copa deschise un document vechi şi citi: „Ca să afli cât aur este în templu, trebuie să însumezi numărul de metri de pe fiecare orizontală…”. Şi Copa socoti: 3 + 3 + 3 + 3 + 3 = 15 ; 3 + 4 + 4 + 4 + 3 = 18 ; 3 + 4 + 5 + 4 + 3 = 19 ; celelalte 18 şi 15. „Apoi, trebuie să afli suma numerelor obţinute…”. Iar Copa îşi notă numărul 85. „Toate numerele obţinute se lipesc pentru a forma cel mai mic număr posibil…”. Şi Copa obţinu numărul: 151518181985 . „Din numărul acesta se caută cel mai mare număr de două cifre alăturate. Aceasta este cantitatea de aur din templu.”. Şi Copa ţipă de bucurie: 98!.

Plecaţi în Orintia! Veţi primi cele două numere N şi L şi vi se cere să determinaţi numărul obţinut din sume şi cantitatea de aur.

Date de intrare

Fişierul de intrare templu.in conţine pe prima linie numerele N şi L separate printr-un spaţiu.

Date de ieșire

Fişierul de iesire templu.out va conţine două linii. Pe câte o linie se va scrie câte un număr. Pe prima linie numărul obţinut din sume, iar pe a doua linie cantitatea de aur.

Restricţii şi precizări

  • 2≤L≤10
  • 1≤N≤50

Exemplul 1

templu.in
 3 5
templu.out
 151518181985
 98



Rezolvare

def calculate_gold_quantity(N, L):
    total_sum = 0
    gold_number = ""
    
    for i in range(N):
        level_sum = 0
        for j in range(L):
            level_sum += N + j
            gold_number += str(N + j)
        total_sum += level_sum
    
    gold_quantity = max(int(gold_number[i:i+2]) for i in range(len(gold_number) - 1))
    
    return total_sum, gold_quantity

def main():
    with open("templu.in", "r") as fin:
        N, L = map(int, fin.readline().split())
    
    total_sum, gold_quantity = calculate_gold_quantity(N, L)
    
    with open("templu.out", "w") as fout:
        fout.write(str(total_sum) + "\n")
        fout.write(str(gold_quantity))

if __name__ == "__main__":
    main()