2817 - Identice 4

De la Universitas MediaWiki

Cerința

Subprogramul identice are doi parametri, în această ordine, a și b, prin care primește câte un număr natural (10≤a≤b≤106). Subprogramul afișează pe ecran toate numerele naturale din intervalul [a,b] care au toate cifrele identice. Numerele afișate sunt separate prin câte un spațiu, iar dacă nu există astfel de numere, se afişează pe ecran mesajul nu exista.

Scrieţi definiţia completă a subprogramului.

Important:

Soluția propusă va conține definiția subprogramului cerut. Prezența în soluție a altor instrucțiuni poate duce erori de compilare sau de execuție care vor avea ca efect depunctarea soluției.

Exemplul 1

Input:

a=700

b=1500

Output:

777 888 999 1111

Exemplul 2

Input:

a=-1

b=2

Output:

nu exista

Rezolvare

def cifre_identice(numar):
    """
    Verifică dacă toate cifrele unui număr sunt identice.
    :param numar: Numărul de verificat.
    :return: True dacă toate cifrele sunt identice, False în caz contrar.
    """
    cifra = numar % 10  # Se obține ultima cifră
    numar_temporar = numar // 10

    while numar_temporar > 0:
        if numar_temporar % 10 != cifra:
            return False
        numar_temporar //= 10

    return True

def identice(a, b):
    """
    Afișează numerele naturale din intervalul [a, b] care au toate cifrele identice.

    :param a: Primul număr natural din interval (10≤a≤b≤1000000).
    :param b: Al doilea număr natural din interval (10≤a≤b≤1000000).
    """
    a = max(a, 10)  # Asigurăm că a este cel puțin 10
    exista_numere_identice = False

    for numar in range(a, min(b + 1, 1000001)):
        if cifre_identice(numar):
            print(numar, end=' ')
            exista_numere_identice = True

    if not exista_numere_identice:
        print("nu exista")

# Exemplu de apel:
a = 700
b = 1500
identice(a, b)