1151 - Verif Egale Div Imp

From Bitnami MediaWiki
Revision as of 15:30, 3 December 2023 by Gabi (talk | contribs) (Pagină nouă: = Cerinţa = Se dă un vector cu <code>n</code> 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 <code>n</code>, apoi <code>n</code> numere naturale, reprezentând elementele vectorului. = Date de ieşire = Programul afișează pe ecran mesajul <code>DA</code>, dacă vectorul are toate elementele egale, sau <code>NU</code>, în caz contra...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinţa[edit]

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

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

Date de ieşire[edit]

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

Restricţii şi precizări[edit]

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

Exemplul 1[edit]

Date de intrare

7
6 6 6 6 4 6 6 

Date de ieșire

NU

Exemplul 2[edit]

Date de intrare

501

Date de ieșire

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

Rezolvare[edit]

<syntaxhighlight lang="python3" line="1"> 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()

</syntaxhighlight>