1153 - -Verif Nr Par Cifre Div Imp

From Bitnami MediaWiki

Cerința[edit | edit source]

Se dă un şir cu n elemente, numere naturale. Folosind metoda Divide et Impera să se verifice dacă toate elementele şirului au număr par de cifre.

Date de intrare[edit | edit source]

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

Programul afișează pe ecran mesajul DA, dacă toate elementele şirului au număr par de cifre, respectiv NU în caz contrar.

Restricții si precizări:[edit | edit source]

  • 1 ≤ n ≤ 100
  • elementele şirului sunt numere naturale nenule cu cel mult 9 cifre

Exemplu[edit | edit source]

Date de intrare

5

2820 82 65 1026 84

Date de iesire

DA

Rezolvare[edit | edit source]

<syntaxhighlight lang="python"> def citire():

   n = 0
   while n < 1 or n > 100:
       try:
           n = int(input("Introduceti un numar intreg intre 1 si 100 inclusiv: "))
           if n < 1 or n > 100:
               print("Numarul introdus nu este in intervalul dorit. Incercati din nou.")
       except ValueError:
           print("Introduceti un numar intreg valid.")
   v = [0] * n
   for i in range(n):
       valid_input = False
       while not valid_input:
           try:
               v[i] = int(input(f"Introduceti elementul {i + 1} (un numar natural nenul cu cel mult 9 cifre): "))
               if 0 < v[i] <= 999999999:  # Verificare pentru numere naturale nenule cu cel mult 9 cifre
                   valid_input = True
               else:
                   print("Numarul introdus nu corespunde criteriilor. Incercati din nou.")
           except ValueError:
               print("Introduceti un numar intreg valid.")
   return n, v


def nrcif(st, dr, v):

   if st == dr:
       cnt = 1
       while v[st] > 9:
           v[st] //= 10
           cnt += 1
       return cnt % 2 == 0
   else:
       m = (st + dr) // 2
       R1 = nrcif(st, m, v)
       R2 = nrcif(m + 1, dr, v)
       return R1 and R2


def main():

   n, v = citire()
   if nrcif(0, n - 1, v):
       print("DA")
   else:
       print("NU")


if __name__ == "__main__":

   main()

</syntaxhighlight>