1151 - Verif Egale Div Imp

De la Universitas MediaWiki

Cerinţa

Se dă un vector cu n elemente numere naturale. Folosind metoda Divide et Impera să se verifice dacă toate elementele vectorului sunt egale.

Date de intrare

Programul citește de la tastatură numărul n, apoi n numere naturale, reprezentând elementele vectorului.

Date de ieşire

Programul afișează pe ecran mesajul DA, dacă vectorul are toate elementele egale, sau NU, în caz contrar.

Restricţii şi precizări

  • 1 ≤ n ≤ 500
  • fiecare element al vectorului va avea cel mult patru cifre

Exemplul 1

Date de intrare

7
6 6 6 6 4 6 6 

Date de ieșire

NU

Exemplul 2

Date de intrare

501

Date de ieșire

Numărul de elemente trebuie să fie între 1 și 500. Programul se încheie.

Rezolvare

def verifica_restrictii_n(n):
    if not 1 <= n <= 500:
        print("Numărul de elemente trebuie să fie între 1 și 500. Programul se încheie.")
        return False
    return True

def verifica_restrictii_element(element):
    if not 0 <= element < 10000:
        print("Elementele vectorului trebuie să aibă cel mult patru cifre. Programul se încheie.")
        return False
    return True

def are_toate_elementele_egale(arr, left, right):
    if left == right:
        return True  # Un singur element este întotdeauna "egal" cu el însuși
    
    mid = (left + right) // 2
    
    are_toate_left = are_toate_elementele_egale(arr, left, mid)
    are_toate_right = are_toate_elementele_egale(arr, mid + 1, right)
    
    return are_toate_left and are_toate_right and (arr[left] == arr[right])

def main():
    # Citim numărul de elemente
    n = int(input("Introduceți numărul de elemente (1 ≤ n ≤ 500): "))
    
    # Verificăm restricția pentru n folosind funcția dedicată
    if not verifica_restrictii_n(n):
        return
    
    # Citim elementele vectorului
    arr = []
    for i in range(n):
        element = int(input(f"Introduceți elementul {i + 1} (elemente cu cel mult 4 cifre): "))
        
        # Verificăm restricția pentru elementele vectorului folosind funcția dedicată
        if not verifica_restrictii_element(element):
            return
        
        arr.append(element)
    
    # Verificăm și afișăm rezultatul
    rezultat = are_toate_elementele_egale(arr, 0, n - 1)
    if rezultat:
        print("DA")
    else:
        print("NU")

if __name__ == "__main__":
    main()