1923 - Cifre egale

From Bitnami MediaWiki
Revision as of 14:05, 25 October 2023 by AntalKrisztian (talk | contribs) (Pagină nouă: == 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...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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>

  1. 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>