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>