0372 - Numarare 1

From Bitnami MediaWiki

Sursă: [1]

Cerinţa[edit | edit source]

Se citesc n numere naturale. Determinați în câte perechi citite consecutiv numerele au sumele cifrelor de parități diferite.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii.

Date de ieşire[edit | edit source]

Dacă datele introduse sunt corecte, pe ecran se va afișa "Datele introduse sunt corecte.", apoi programul afișează pe ecran numărul m , reprezentând numărul de perechi care respectă regula. În caz contrar, se va afișa pe ecran mesajul "Datele introduse nu sunt corecte.".

Restricții și precizări[edit | edit source]

  • 1 ⩽ n ⩽ 100
  • cele n numere citite vor avea cel mult 9 cifre

Exemplu[edit | edit source]

Intrare
5
176 2943 52422 911 1975
Ieșire
Datele introduse sunt corecte.
2

Explicație[edit | edit source]

Cele 2 perechi sunt: 2943 52422, 911 1975.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

def verifica_date_intrare(n: int, numere: list[int]) -> bool:

   if n < 1 or n > 100:
       return False
   for numar in numere:
       if numar < 0 or numar > 999999999:
           return False
   return True

if __name__ == "__main__":

   n = int(input("Introduceti numarul de numere: "))
   numere_input = input("Introduceti lista de numere separate prin spatii: ").split()
   numere = [int(numar) for numar in numere_input]
   if verifica_date_intrare(n, numere):
       print("Datele introduse sunt corecte.")
       numar_perechi = 0
       pr = numere[0]
       for i in range(1, n):
           x = numere[i]
           aux = x
           a = pr
           s1 = 0
           s2 = 0
           while aux != 0:
               s1 = s1 + aux % 10
               aux = aux // 10
           while a != 0:
               s2 = s2 + a % 10
               a = a // 10
           if s1 % 2 == 0 and s2 % 2 == 1:
               numar_perechi += 1
           if s1 % 2 == 1 and s2 % 2 == 0:
               numar_perechi += 1
           pr = x
       print(numar_perechi)
   else:
       print("Datele introduse nu sunt corecte.")


</syntaxhighlight>

Explicație rezolvare[edit | edit source]

Acest cod începe prin definirea unei funcții verifica_date_intrare care primește doi parametri: n de tip int și numere de tip list[int]. Funcția verifică dacă n este mai mare sau egal cu 1 și mai mic sau egal cu 100, iar fiecare element din lista numere este mai mare sau egal cu 0 și mai mic sau egal cu 999999999. Dacă oricare dintre aceste condiții nu este îndeplinită, funcția va returna False, altfel va returna True.

Următoarea secțiune a codului verifică datele de intrare prin intermediul funcției verifica_date_intrare. Dacă datele sunt corecte, utilizatorul este informat că datele introduse sunt corecte printr-un mesaj specific. Variabila numere_input primește o listă de numere introduse de utilizator, care este apoi convertită într-o listă de numere întregi folosind o buclă for și o listă de comprimare.

Codul continuă prin inițializarea variabilelor și efectuarea unui număr de iterații de calcul al perechilor de numere. În fiecare iterație, se calculează sumele cifrelor fiecărui număr și se verifică dacă acestea sunt impare sau pare. În funcție de rezultat, variabila numar_perechi este actualizată. La sfârșit, numărul total de perechi este afișat.