1150 - Verif Pare Div Imp

De la Universitas MediaWiki

Cerinţa

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

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

Date de ieşire

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

Restricţii şi precizări

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

Exemplul 1

Date de intrare

5
2 8 6 10 8

Date de ieșire

DA

Exemplul 2

Date de intrare

101

Date de ieșire

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

Rezolvare

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

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

# 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()))

# 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()

# Continuă cu verificarea dacă toate elementele sunt pare
rezultat = toate_elementele_pare(arr, 0, n - 1)

# Afișează rezultatul
if rezultat:
    print("DA, toate elementele sunt pare.")
else:
    print("NU, nu toate elementele sunt pare.")