1150 - Verif Pare Div Imp

From Bitnami MediaWiki
Revision as of 16:39, 3 December 2023 by Gabi (talk | contribs) (Pagină nouă: = Cerinţa = Se dă un şir cu <code>n</code> elemente, numere naturale. Folosind metoda Divide et Impera să se verifice dacă toate elementele şirului sunt pare. = Date de intrare = Programul citește de la tastatură numărul <code>n</code>, iar apoi cele <code>n</code> elemente ale şirului, separate prin spaţii. = Date de ieşire = Programul afișează pe ecran mesajul <code>DA</code>, dacă toate elementele şirului sunt pare, respectiv <code>NU</code> în caz contr...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinţa[edit]

Se dă un şir cu n elemente, numere naturale. Folosind metoda Divide et Impera să se verifice dacă toate elementele şirului sunt pare.

Date de intrare[edit]

Programul citește de la tastatură numărul n, iar apoi cele n elemente ale şirului, separate prin spaţii.

Date de ieşire[edit]

Programul afișează pe ecran mesajul DA, dacă toate elementele şirului sunt pare, respectiv NU în caz contrar.

Restricţii şi precizări[edit]

  • 1 ≤ n ≤ 100
  • elementele şirului vor fi mai mici decât 10000

Exemplul 1[edit]

Date de intrare

5
2 8 6 10 8

Date de ieșire

DA

Exemplul 2[edit]

Date de intrare

101

Date de ieșire

Eroare: Numărul de elemente trebuie să fie între 1 și 100.

Rezolvare[edit]

<syntaxhighlight lang="python3" line="1"> def verificare_restrictii(n, arr):

   # Verifică restricția 1: 1 ≤ n ≤ 100
   if not (1 <= n <= 100):
       print("Eroare: Numărul de elemente trebuie să fie între 1 și 100.")
       return False
   # Verifică restricția 2: Elementele șirului vor fi mai mici decât 10000
   if any(x >= 10000 for x in arr):
       print("Eroare: Elementele șirului trebuie să fie mai mici decât 10000.")
       return False
   return True

def toate_elementele_pare(arr, stanga, dreapta):

   if stanga == dreapta:
       return arr[stanga] % 2 == 0
   mijloc = (stanga + dreapta) // 2
   # Verifică în stânga și dreapta
   parte_stanga_pare = toate_elementele_pare(arr, stanga, mijloc)
   parte_dreapta_pare = toate_elementele_pare(arr, mijloc + 1, dreapta)
   # Combină rezultatele
   return parte_stanga_pare and parte_dreapta_pare
  1. Exemplu de folosire

n = int(input("Introduceti numarul de elemente: "))

  1. Iesirea dacă restricțiile nu sunt îndeplinite

if not (1 <= n <= 100):

   print("Eroare: Numărul de elemente trebuie să fie între 1 și 100.")
   exit()

arr = list(map(int, input("Introduceti elementele separate prin spatii: ").split()))

  1. Iesirea dacă restricțiile nu sunt îndeplinite

if any(x >= 10000 for x in arr):

   print("Eroare: Elementele șirului trebuie să fie mai mici decât 10000.")
   exit()
  1. Continuă cu verificarea dacă toate elementele sunt pare

rezultat = toate_elementele_pare(arr, 0, n - 1)

  1. Afișează rezultatul

if rezultat:

   print("DA, toate elementele sunt pare.")

else:

   print("NU, nu toate elementele sunt pare.")

</syntaxhighlight>