1153 - -Verif Nr Par Cifre Div Imp: Difference between revisions

From Bitnami MediaWiki
Andrada378 (talk | contribs)
No edit summary
Andrada378 (talk | contribs)
 
Line 9: Line 9:


== Restricții si precizări: ==
== Restricții si precizări: ==
1 ≤ n ≤ 100


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


=== Exemplu ===
=== Exemplu ===
Line 27: Line 27:
<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
def citire():
def citire():
     n = int(input())
     n = 0
     v = [int(input()) for _ in range(n)]
    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
     return n, v


def nrcif(st, dr, v):
def nrcif(st, dr, v):
Line 43: Line 64:
         R2 = nrcif(m + 1, dr, v)
         R2 = nrcif(m + 1, dr, v)
         return R1 and R2
         return R1 and R2


def main():
def main():
Line 50: Line 72:
     else:
     else:
         print("NU")
         print("NU")


if __name__ == "__main__":
if __name__ == "__main__":
     main()
     main()
</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 15:32, 4 January 2024

Cerința

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

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 au număr par de cifre, respectiv NU în caz contrar.

Restricții si precizări:

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

Exemplu

Date de intrare

5

2820 82 65 1026 84

Date de iesire

DA

Rezolvare

<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>