2749 – Tată: Difference between revisions

From Bitnami MediaWiki
Simina (talk | contribs)
Pagină nouă: = Cerința = Se dă un vector <code>t=(t[1], t[2], ..., t[n])</code> care memorează numere naturale cuprinse între <code>0</code> și <code>n</code>. Să se verifice dacă <code>t</code> este sau nu vector de tați asociat unui arbore cu rădăcină. = Date de intrare = Programul citește de la tastatură numărul <code>n</code>, iar apoi <code>n</code> numere naturale, separate prin spații. = Date de ieșire = Programul va afișa pe ecran mesajul <code>DA</code>, dacă...
Tag: visualeditor
 
Simina (talk | contribs)
Tag: visualeditor
 
Line 6: Line 6:


= Date de ieșire =
= Date de ieșire =
Programul va afișa pe ecran mesajul <code>DA</code>, dacă <code>t</code> este vector de tați, sau mesajul <code>NU</code> în caz contrar.
Programul va afișa pe ecran mesajul <code>DA</code>, dacă <code>t</code> este vector de tați, sau mesajul <code>NU</code> în caz contrar.În cazul în care restricțiile nu sunt îndeplinite, se va afișa mesajul "Nu corespunde restricțiilor impuse".


= Restricții și precizări =
= Restricții și precizări =

Latest revision as of 14:54, 27 December 2023

Cerința[edit]

Se dă un vector t=(t[1], t[2], ..., t[n]) care memorează numere naturale cuprinse între 0 și n. Să se verifice dacă t este sau nu vector de tați asociat unui arbore cu rădăcină.

Date de intrare[edit]

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

Date de ieșire[edit]

Programul va afișa pe ecran mesajul DA, dacă t este vector de tați, sau mesajul NU în caz contrar.În cazul în care restricțiile nu sunt îndeplinite, se va afișa mesajul "Nu corespunde restricțiilor impuse".

Restricții și precizări[edit]

  • 1 ≤ n ≤ 100.000
  • 0 ≤ t[i] ≤ n

Exemplul 1:[edit]

Intrare

5
0 1 1 3 3

Ieșire

DA

Exemplul 2:[edit]

Intrare

5
2 0 2 5 4

Ieșire

NU

Explicație[edit]

Nodul 4 are ca tată pe 5, iar nodul 5 are ca tată pe 4

Exemplul 3:[edit]

Intrare

100001

Consola

Datele nu corespund restrictiilor impuse

Rezolvare[edit]

<syntaxhighlight lang="python3"> def sunt_restrictii_incorecte(n, t):

   # Verifică restricțiile pentru n
   if not (1 <= n <= 100000):
       return True
   # Verifică restricțiile pentru t[i]
   for i in range(n):
       if not (0 <= t[i] <= n):
           return True
   return False

def este_vector_de_tati(t):

   n = len(t)
   # Verifică dacă restricțiile sunt respectate
   if sunt_restrictii_incorecte(n, t):
       return False
   # Verifică dacă rădăcina arborelui este corectă
   if t[0] != 0:
       return False
   # Verifică dacă fiecare element al vectorului este un index valid
   for i in range(1, n):
       if not (0 <= t[i] < n):
           return False
   return True
  1. Citeste numarul n

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

  1. Ieși din program dacă restricțiile pentru n nu sunt respectate

if n < 1 or n > 100000:

   print("Datele nu corespund restrictiilor impuse")

else:

   # Citeste vectorul t
   t = list(map(int, input("Introduceti vectorul t: ").split()))
   # Verifica daca restrictiile sunt respectate si afiseaza mesajul corespunzator
   if sunt_restrictii_incorecte(n, t):
       print("Datele nu corespund restrictiilor impuse")
   else:
       # Verifica daca t este vector de tati si afiseaza rezultatul
       if este_vector_de_tati(t):
           print("DA")
       else:
           print("NU")

</syntaxhighlight>