1923 - Cifre egale
Cerinţa
Afişaţi, în ordine crescătoare, toate numerele dintr-un anumit interval care au toate cifrele egale. Sunt două tipuri de cerinţe:
- 1. se dau a şi b si se cer toate numerele din intervalul a, b (inclusiv, eventual, capetele).
- 2. Se da x si se cer toate numerele cu maxim x cifre.
Date de intrare
Din fişierul egale.in se citeşte mai întâi un număr T. Dacă T este 1 pe a doua linie sunt două numere a şi b, separate prin spaţiu. Dacă T este 2, pe a doua linie va fi numărul x.
Date de ieşire
In fişierul egale.out se scriu, pe un rând numerele cerute separate prin câte un spaţiu.
Restricții și precizări
- 1 ⩽ a ⩽ b ⩽ 10 17
- 1 ⩽ x ⩽ 100
- Pentru 20% din punctaj avem T = 1 şi 1 ⩽ a, b ⩽ 10 4
- Pentru încă 20% din punctaj avem T = 1 şi 10 8 ⩽ a, b ⩽ 10 9
- Pentru încă 10% din punctaj avem T = 1 şi a, b > 10 9
- Pentru 50% din punctaj avem T=2
Exemplu
- egale.in
- 1
- 8 30
- egale.out
- 8 9 11 22
- egale.in
- 2
- 2
- egale.out
- 1 2 3 4 5 6 7 8 9 11 22 33 44 55 66 77 88 99
Rezolvare
<syntaxhighlight lang="python" line>
- Definim funcția numere_egale
def numere_egale():
# Deschidem fișierul de intrare 'egale.in' with open('egale.in', 'r') as intrare: # Citim primul rând din fișier și îl convertim la int T = int(intrare.readline()) # Dacă A este 1, citim următorul rând și extragem valorile a și b if T == 1: a, b = map(int, intrare.readline().split()) start = a end = b + 1 else: # Dacă A nu este 1, citim următorul rând și extragem valoarea x x = int(intrare.readline()) start = 1 end = 10 ** x # Inițializăm o listă goală pentru a stoca rezultatele rezultate = [] # Parcurgem fiecare număr în intervalul de la start la end for i in range(start, end): # Dacă toate cifrele numărului sunt egale (adică setul cifrelor sale conține un singur element), îl adăugăm la rezultate if len(set(str(i))) == 1: rezultate.append(i) # Deschidem fișierul de ieșire 'egale.out' with open('egale.out', 'w') as iesire: # Scriem rezultatele în fișier, separate prin spațiu iesire.write(' '.join(map(str, rezultate)))
numere_egale()
</syntaxhighlight>