2817 - Identice 4

From Bitnami 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

<syntaxhighlight lang="python3" line="1"> 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")
  1. Exemplu de apel:

a = 700 b = 1500 identice(a, b) </syntaxhighlight>