3999 - Sum Min 9: Difference between revisions
Andor Giulia (talk | contribs) Pagină nouă: == Rezolvare == <syntaxhighlight lang="python" line="1"> n = int(input("Introduceti numarul de perechi: ")) suma_min = 0 for i in range(n): a, b = map(int, input("Introduceti perechea " + str(i+1) + ": ").split()) suma_min += min(a, b) print("Suma minima este:", suma_min) </syntaxhighlight> |
MiclausIoana (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
Sursă: [https://www.pbinfo.ro/probleme/3999/sum-min9] | |||
== Cerință == | |||
Se dau n perechi de numere naturale '''a''', '''b'''. Să se determine cea mai mică 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 minimă 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. | |||
== Exemple == | |||
=== Exemplu 1 === | |||
; Date de intrare | |||
: 3 | |||
: 2 69 | |||
: 20 10 | |||
: 19 30 | |||
; Date de ieșire | |||
: 31 | |||
==== Explicatie ==== | |||
Se aleg numerele '''2''', '''10''' și '''19'''. Suma lor este '''31'''. | |||
== 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("Suma minima este:", suma_min) | 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 Sum_Min_9(valori): | |||
suma_min = 0 | |||
for a, b in valori: | |||
suma_min += min(a, b) | |||
print("Suma minima este:", suma_min) | |||
if _name_ == '_main_': | |||
n = citeste_n() | |||
valori = citeste_perechi(n) | |||
Sum_Min_9(valori) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== Explicatie == |
Latest revision as of 09:24, 26 April 2023
Sursă: [1]
Cerință
Se dau n perechi de numere naturale a, b. Să se determine cea mai mică 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 minimă 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.
Exemple
Exemplu 1
- Date de intrare
- 3
- 2 69
- 20 10
- 19 30
- Date de ieșire
- 31
Explicatie
Se aleg numerele 2, 10 și 19. Suma lor este 31.
Rezolvare
<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 Sum_Min_9(valori):
suma_min = 0 for a, b in valori: suma_min += min(a, b)
print("Suma minima este:", suma_min)
if _name_ == '_main_':
n = citeste_n() valori = citeste_perechi(n) Sum_Min_9(valori)
</syntaxhighlight>