1153 - -Verif Nr Par Cifre Div Imp
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>