3917 - Numere 1234

From Bitnami MediaWiki
Revision as of 11:05, 7 January 2024 by Rus Marius (talk | contribs) (Pagină nouă: = Cerința = Se citește <code>n</code> număr natural nenul. Afișați în ordine crescătoare toate numerele care au o cifră egală cu <code>1</code>, două cifre de <code>2</code>, …, <code>n</code> cifre egale cu <code>n</code>. = Date de intrare = Programul citește de la tastatură numărul <code>n</code>. = Date de ieșire = Programul va afișa pe ecran pe linii separte numerele cerute.În cazul în care restricțiile nu sunt îndeplinite, se va afișa mesajul "Da...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința[edit | edit source]

Se citește n număr natural nenul. Afișați în ordine crescătoare toate numerele care au o cifră egală cu 1, două cifre de 2, …, n cifre egale cu n.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran pe linii separte numerele cerute.În cazul în care restricțiile nu sunt îndeplinite, se va afișa mesajul "Datele nu corespund restrictiilor impuse".

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

  • 1 ≤ n ≤ 4

Exemplul 1:[edit | edit source]

Intrare

2

Ieșire

122
212
221

Exemplul 2:[edit | edit source]

Intrare

5

Ieșire

Datele nu corespund restrictiilor impuse

Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> def afisare(x, m):

   for i in range(1, m + 1):
       print(x[i], end="")
   print()

def valid(x, k, n):

   vf = [0] * 5
   for i in range(1, k + 1):
       vf[x[i]] += 1
   for i in range(1, n + 1):
       if vf[i] > i:
           return False
   return True

def backtracking(x, k, n, m):

   if k > m:
       afisare(x, m)
   else:
       for i in range(1, n + 1):
           x[k] = i
           if valid(x, k, n):
               backtracking(x, k + 1, n, m)

def check_restriction(n):

   return 1 <= n <= 4

def main():

   n = int(input())
   if not check_restriction(n):
       print("Datele nu corespund restrictiilor impuse")
       return
   
   m = n * (n + 1) // 2
   x = [0] * 11
   backtracking(x, 1, n, m)

if __name__ == "__main__":

   main()

</syntaxhighlight>