3999 - Sum Min 9

From Bitnami MediaWiki

Sursă: [1]

Cerință[edit | edit source]

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[edit | edit source]

Programul citeşte de la tastatură numărul n, apoi n perechi de numere a, 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 minimă 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.

Exemple[edit | edit source]

Exemplu 1[edit | edit source]

Date de intrare
3
2 69
20 10
19 30
Date de ieșire
31

Explicatie[edit | edit source]

Se aleg numerele 2, 10 și 19. Suma lor este 31.

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

Explicatie[edit | edit source]