3917 - Numere 1234
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>