2162 - Conturi: Difference between revisions

From Bitnami MediaWiki
Am creat de la zero.
 
No edit summary
 
Line 39: Line 39:
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>


# citim datele de intrare
def validare_date_intrare(n, x, conturi):
with open("conturi.in") as f:
     if n < 1 or n > 1000:
     n, x = map(int, f.readline().split())
        return False
     conturi = [int(f.readline().strip()) for i in range(n)]
    if x < 1 or x > 9:
        return False
     for cont in conturi:
        if cont < 100 or cont > 999999999:
            return False
    return True


# cautam suma maxima a unui cont de gen masculin la banca x
if __name__ == "__main__":
suma_maxima = 0
    with open("conturi.in") as f:
for cont in conturi:
        n, x = map(int, f.readline().split())
    banca, gen, suma = int(str(cont)[0]), int(str(cont)[1]), int(str(cont)[2:])
        conturi = [int(f.readline().strip()) for _ in range(n)]
    if banca == x and gen == 1:
        suma_maxima = max(suma_maxima, suma)


# scriem suma maxima in fisierul de iesire
    if not validare_date_intrare(n, x, conturi):
with open("conturi.out", "w") as f:
        print("Eroare: Datele introduse nu sunt valide!")
    f.write(str(suma_maxima))
        exit(1)
print("Datele sunt introduse corect.")
 
    suma_maxima = 0
    for cont in conturi:
        banca, gen, suma = int(str(cont)[0]), int(str(cont)[1]), int(str(cont)[2:])
        if banca == x and gen == 1:
            suma_maxima = max(suma_maxima, suma)
 
    with open("conturi.out", "w") as f:
        f.write(str(suma_maxima))
 
    print("Datele sunt introduse corect.")


</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 09:12, 19 May 2023

Sursa: [1]


Enunt[edit | edit source]

În oraşul Olimpidia, toate băncile au hotărât să adopte o convenţie în ceea ce priveşte identificarea clienţilor săi, astfel încât fiecare cont deschis de un client să aibă asociat un cod format din exact 6 cifre:

  • prima cifră (cea mai din stânga cifră a codului) va reprezenta numărul băncii (acest lucru fiind posibil deoarece în oraş nu sunt mai mult de 9 bănci, acestea fiind numerotate începând de la 1);
  • a doua cifră va reprezenta genul persoanei (1 pentru genul masculin şi 2 pentru genul feminin);
  • ultimele 4 cifre vor reprezenta suma aflată în contul persoanei în momentul în care se aplică stabilita convenţie.

Cerinţa[edit | edit source]

Cunoscând numărul total de conturi deschise şi codurile corespunzătoare acestora să se determine suma maximă pe care o are o persoană de gen masculin într-un cont aflat la banca X.

Date de intrare[edit | edit source]

Fişierul de intrare conturi.in conţine pe prima linie numerele naturale N X, care reprezintă numărul de conturi deschise la băncile din oraş, respectiv numărul băncii pentru care trebuie aflată suma maximă. Pe următoarele N linii se află N numere naturale nenule, câte un număr pe o linie, reprezentând codurile conturilor, obţinute în urma aplicării convenţiei.

Date de ieșire[edit | edit source]

Fişierul de ieşire conturi.out va conţine o singură linie pe care va fi scrisă suma maximă pe care o persoană de gen masculin o are într-un cont aflat la banca X.

Restricţii şi precizări[edit | edit source]

  • 1 ≤ N ≤ 100
  • 1 ≤ X ≤ 9
  • Pentru datele de test se garantează că există cel puţin un cont la banca X aparţinând unei persoane de gen masculin

Exemplu[edit | edit source]

conturi.in
5 2
213400
515000
229088
326909
217044
conturi.out
7044

Explicație[edit | edit source]

Există 5 conturi: 3 la banca 2, unul la banca 5 şi unul la banca 3. Dintre cele 3 conturi deschise la banca 2, sunt 2 conturi deţinute de bărbaţi, unul cu suma 3400, celălalt cu suma 7044. Suma maximă cerută este 7044.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

def validare_date_intrare(n, x, conturi):

   if n < 1 or n > 1000:
       return False
   if x < 1 or x > 9:
       return False
   for cont in conturi:
       if cont < 100 or cont > 999999999:
           return False
   return True

if __name__ == "__main__":

   with open("conturi.in") as f:
       n, x = map(int, f.readline().split())
       conturi = [int(f.readline().strip()) for _ in range(n)]
   if not validare_date_intrare(n, x, conturi):
       print("Eroare: Datele introduse nu sunt valide!")
       exit(1)
   suma_maxima = 0
   for cont in conturi:
       banca, gen, suma = int(str(cont)[0]), int(str(cont)[1]), int(str(cont)[2:])
       if banca == x and gen == 1:
           suma_maxima = max(suma_maxima, suma)
   with open("conturi.out", "w") as f:
       f.write(str(suma_maxima))
   print("Datele sunt introduse corect.")

</syntaxhighlight>