1287 - CifreGen

From Bitnami MediaWiki

Cerința[edit | edit source]

Se dau două cifre a b și un număr n. Să se genereze toate numerele cu exact n cifre cuprinse între a și b.

Date de intrare[edit | edit source]

Programul citește de la tastatură numerele a b n.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran numerele generate, câte unul pe linie, în ordine crescătoare. În cazul în care restricțiile nu sunt îndeplinite, se va afișa mesajul "Nu corespunde restricțiilor".

Restricții și precizări[edit | edit source]

  • 1 ≤ n ≤ 8
  • 0 < a < b < 10

Exemplul 1[edit | edit source]

Intrare

3 5 3

Ieșire

333
334
335
343
344
345
353
354
355
433
434
435
443
444
445
453
454
455
533
534
535
543
544
545
553
554
555

Exemplul 2[edit | edit source]

Intrare

5 3 10

consola

"Nu corespunde restricțiilor".

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> def validate_restrictions(a, b, n):

   if 1 <= n <= 8 and 0 < a < b < 10:
       return True
   else:
       print("Nu corespunde restricțiilor")
       return False
  1. Citirea datelor de intrare

a = int(input("Introduceți a: ")) b = int(input("Introduceți b: ")) n = int(input("Introduceți n: "))

  1. Validarea restricțiilor

if validate_restrictions(a, b, n):

   # Generarea și afișarea numerelor
   def generate_numbers(current_number, remaining_digits):
       if remaining_digits == 0:
           print(current_number)
           return
       for digit in range(a, b+1):
           generate_numbers(current_number * 10 + digit, remaining_digits - 1)
   for starting_digit in range(a, b+1):  
       generate_numbers(starting_digit, n - 1)

</syntaxhighlight>