1153 - -Verif Nr Par Cifre Div Imp

De la Universitas MediaWiki

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

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