3998 - Sum Max 9: Difference between revisions
Andor Giulia (talk | contribs) Pagină nouă: == Rezolvare == <syntaxhighlight lang="python" line="1"> n = int(input("Introduceti numarul de perechi: ")) perechi = [] for i in range(n): a, b = map(int, input(f"Introduceti perechea {i+1}: ").split()) perechi.append((a, b)) suma_maxima = 0 for a, b in perechi: suma_maxima += max(a, b) print(f"Suma maxima este: {suma_maxima}") </syntaxhighlight> |
MiclausIoana (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
Sursă: [https://www.pbinfo.ro/probleme/3998/sum-max9] | |||
== Cerință == | |||
Se dau '''n''' perechi de numere naturale '''a''','''b'''. Să se determine cea mai mare sumă care se poate obține adunând câte un singur număr din fiecare pereche de numere citite '''a''' şi '''b'''. | |||
== Date de intrare == | |||
Programul citeşte de la tastatură numărul '''n''', apoi n perechi de numere'''a''', '''b'''. | |||
== Date de ieșire == | |||
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.". Programul pe ecranului suma maximă obținută. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.". | |||
== Restricții și precizări == | |||
* '''1 ≤ n ≤ 10.000''' | |||
* fiecare dintre numerele '''a''' şi '''b''' au cel mult '''9''' cifre. | |||
* cele '''n''' numere citite vor avea cel mult '''9''' cifre | |||
== Exemple == | |||
=== Exemplu 1 === | |||
; Date de intrare | |||
: 3 | |||
: 2 69 | |||
: 20 10 | |||
: 19 30 | |||
; Date de ieșire | |||
: 119 | |||
==== Explicatie ==== | |||
Se aleg numerele '''69''', '''20''' și '''30'''. Suma lor este '''119'''. | |||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line="1"> | <syntaxhighlight lang="python" line="1"> | ||
n = int(input("Introduceti numarul de perechi: ")) | def citeste_n(): | ||
while True: | |||
try: | |||
n = int(input("Introduceti numarul de perechi: ")) | |||
if n >= 1 and n <= 10000: | |||
print("Datele sunt corecte.") | |||
return n | |||
else: | |||
print("Datele nu sunt conform restrictiilor impuse.") | |||
except ValueError: | |||
print("Trebuie introduse doar numere intregi.") | |||
print(f"Suma maxima este: {suma_maxima}") | def nrcifre(nr): | ||
nrcif = 0 | |||
while nr != 0: | |||
nrcif += 1 | |||
nr //= 10 | |||
return nrcif | |||
def citeste_perechi(n): | |||
valori = [] | |||
for i in range(n): | |||
while True: | |||
try: | |||
valoare1, valoare2 = map(int, input("Introduceti o pereche de valori separate prin spatiu: ").split()) | |||
cifre1 = nrcifre(valoare1) | |||
cifre2 = nrcifre(valoare2) | |||
if cifre1 <= 9 and cifre2 <= 9: | |||
print("Datele sunt corecte.") | |||
valori.append((valoare1, valoare2)) | |||
break | |||
else: | |||
print("Datele nu sunt conform restrictiilor impuse.") | |||
except ValueError: | |||
print("Trebuie introduse doar valori cu mai putin de 9 cifre.") | |||
return valori | |||
def pereche(valori): | |||
suma_maxima = 0 | |||
for a, b in valori: | |||
suma_maxima += max(a, b) | |||
print(f"Suma maxima este: {suma_maxima}") | |||
return | |||
if _name_ == '_main_': | |||
n = citeste_n() | |||
valori = citeste_perechi(n) | |||
pereche(valori) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== Explicatie == | |||
Acest cod implementează o soluție pentru o problemă care cere să se determine cea mai mare sumă care se poate obține adunând câte un singur număr din fiecare pereche de numere citite a şi b. Programul primește de la tastatură numărul de perechi și valorile acestora, și verifică dacă acestea respectă restricțiile problemei: numărul de perechi trebuie să fie între 1 și 10000, iar numerele a și b trebuie să aibă cel mult 9 cifre. Dacă datele sunt corecte, programul afișează pe ecran suma maximă obținută. | |||
Funcția citeste_n() citește de la tastatură numărul de perechi și verifică dacă acesta respectă restricțiile impuse de problema dată. Funcția nrcifre(nr) primește un număr și returnează numărul de cifre al acestuia. | |||
Funcția citeste_perechi(n) primește numărul de perechi și citește de la tastatură aceste perechi de numere. | |||
Funcția verifică dacă numerele a și b respectă restricțiile problemei, adică să aibă cel mult 9 cifre. Dacă datele sunt corecte, funcția adaugă perechea de numere în lista valori. | |||
Funcția pereche(valori) primește lista de perechi de numere citite de la tastatură și calculează suma maximă obținută adunând câte un singur număr din fiecare pereche de numere citite. Suma maximă este afișată pe ecran. | |||
În funcția principală main(), se citește numărul de perechi și valorile acestora folosind funcțiile citeste_n() și citeste_perechi(), și se calculează suma maximă apelând funcția pereche(). |
Latest revision as of 09:17, 26 April 2023
Sursă: [1]
Cerință[edit | edit source]
Se dau n perechi de numere naturale a,b. Să se determine cea mai mare sumă care se poate obține adunând câte un singur număr din fiecare pereche de numere citite a şi b.
Date de intrare[edit | edit source]
Programul citeşte de la tastatură numărul n, apoi n perechi de numerea, b.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.". Programul pe ecranului suma maximă obținută. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".
Restricții și precizări[edit | edit source]
- 1 ≤ n ≤ 10.000
- fiecare dintre numerele a şi b au cel mult 9 cifre.
- cele n numere citite vor avea cel mult 9 cifre
Exemple[edit | edit source]
Exemplu 1[edit | edit source]
- Date de intrare
- 3
- 2 69
- 20 10
- 19 30
- Date de ieșire
- 119
Explicatie[edit | edit source]
Se aleg numerele 69, 20 și 30. Suma lor este 119.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1"> def citeste_n():
while True: try: n = int(input("Introduceti numarul de perechi: ")) if n >= 1 and n <= 10000: print("Datele sunt corecte.") return n else: print("Datele nu sunt conform restrictiilor impuse.") except ValueError: print("Trebuie introduse doar numere intregi.")
def nrcifre(nr):
nrcif = 0 while nr != 0: nrcif += 1 nr //= 10 return nrcif
def citeste_perechi(n):
valori = [] for i in range(n): while True: try: valoare1, valoare2 = map(int, input("Introduceti o pereche de valori separate prin spatiu: ").split()) cifre1 = nrcifre(valoare1) cifre2 = nrcifre(valoare2) if cifre1 <= 9 and cifre2 <= 9: print("Datele sunt corecte.") valori.append((valoare1, valoare2)) break else: print("Datele nu sunt conform restrictiilor impuse.") except ValueError: print("Trebuie introduse doar valori cu mai putin de 9 cifre.") return valori
def pereche(valori):
suma_maxima = 0 for a, b in valori: suma_maxima += max(a, b) print(f"Suma maxima este: {suma_maxima}") return
if _name_ == '_main_':
n = citeste_n() valori = citeste_perechi(n) pereche(valori)
</syntaxhighlight>
Explicatie[edit | edit source]
Acest cod implementează o soluție pentru o problemă care cere să se determine cea mai mare sumă care se poate obține adunând câte un singur număr din fiecare pereche de numere citite a şi b. Programul primește de la tastatură numărul de perechi și valorile acestora, și verifică dacă acestea respectă restricțiile problemei: numărul de perechi trebuie să fie între 1 și 10000, iar numerele a și b trebuie să aibă cel mult 9 cifre. Dacă datele sunt corecte, programul afișează pe ecran suma maximă obținută.
Funcția citeste_n() citește de la tastatură numărul de perechi și verifică dacă acesta respectă restricțiile impuse de problema dată. Funcția nrcifre(nr) primește un număr și returnează numărul de cifre al acestuia.
Funcția citeste_perechi(n) primește numărul de perechi și citește de la tastatură aceste perechi de numere. Funcția verifică dacă numerele a și b respectă restricțiile problemei, adică să aibă cel mult 9 cifre. Dacă datele sunt corecte, funcția adaugă perechea de numere în lista valori.
Funcția pereche(valori) primește lista de perechi de numere citite de la tastatură și calculează suma maximă obținută adunând câte un singur număr din fiecare pereche de numere citite. Suma maximă este afișată pe ecran. În funcția principală main(), se citește numărul de perechi și valorile acestora folosind funcțiile citeste_n() și citeste_perechi(), și se calculează suma maximă apelând funcția pereche().