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