0366 - Cifre 3

De la Universitas MediaWiki

sursa: [1]

Cerinţa

Se citește un număr natural. Să se afișeze, în ordine crescătoare, numerele naturale mai mici decât numarul dat cu proprietatea că pătratul și cubul lor nu au cifre comune.

Date de intrare

Programul citește de la tastatură numărul.

Date de ieşire

Programul afișează pe ecran numerele cerute, în ordine crescătoare, separate prin exact un spațiu.

Restricții și precizări

  • 1 ≤ n ≤ 1000

Exemplu

Intrare
20
Ieșire
Datele introduse corespund restricțiilor impuse.
2 3 8 9 14

Rezolvare

def validare():
    try:
        n = int(input("Introduceți un număr natural: "))  # citim numarul de la tastatura
        if n < 1 or n > 1000:  # verificam daca numarul este valid
            raise ValueError("Datele introduse sunt invalide. Numărul trebuie să fie între 1 și 1000.")
        return n
    except ValueError as eroare:
        print(eroare)
        return None

def gaseste_numere_fara_cifre_comune(n):
    numere_fara_cifre_comune = []
    for i in range(1, n):
        patrat = i ** 2
        cub = i ** 3
        cifre_patrat = set(str(patrat))  # transformam cifrele patratului in set
        cifre_cub = set(str(cub))  # transformam cifrele cubului in set
        if cifre_patrat.isdisjoint(cifre_cub):  # verificam daca cele doua seturi sunt disjuncte
            numere_fara_cifre_comune.append(i)  # daca da, adaugam numarul in lista
    return numere_fara_cifre_comune

if __name__ == '__main__':
    n = validare()  # obtinem un numar valid
    if n is not None:
        numere_fara_cifre_comune = gaseste_numere_fara_cifre_comune(n)  # gasim numerele fara cifre comune
        print(*numere_fara_cifre_comune)  # afisam numerele din lista
        print("Datele introduse corespund condițiilor impuse.")