0130 - Sort Cif
Cerința[edit | edit source]
Se dă un vector cu n
elemente numere întregi.
Să se ordoneze crescător elementele unui vector crescător după suma cifrelor.
Date de intrare[edit | edit source]
Fişierul de intrare sortcif.in
conţine pe prima linie numărul n
si pe a doua linie n
numere întregi separate prin spaţii.
Date de ieșire[edit | edit source]
Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse."
Pe următoarea linie se vor afișa cele n
elemente ale vectorului, ordonate conform cerinței, separate printr-un spațiu.
În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu corespund restricțiilor impuse."
Restricții și precizări[edit | edit source]
0 < n ≤ 100
- valoarea absolută a numerelor de pe a doua linie a fişierului de intrare va fi mai mică decât
230
.
Exemplu 1[edit | edit source]
- Intrare
- 6
- 89 22 91 4005 51 721
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 22 51 4005 91 721 89
Exemplu 2[edit | edit source]
- Intrare
- -2
- 89 22 91 4005 51 721
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1">
- 0130 Sort Cif
def conditii(n, numere):
return len(numere) == n and \ 0 < n <= 1000 and \ all(abs(nr) < 2**30 for nr in numere)
def sort_cif(numere):
rezultat = sorted(numere, key=lambda numar: sum([int(cifra) for cifra in str(numar)])) # cheia de sortare returneaza suma cifrelor unui număr, SCif(numar) -> sum([int(cifra) for cifra in str(numar)]) # Numerele sunt sortate după SCif(x) print(" ".join([str(x) for x in rezultat]))
if __name__ == "__main__":
n = int(input()) numere = [int(x) for x in input().split()] if not conditii(n, numere): print("Datele de intrare nu corespund restricțiilor impuse.") else: print("Datele de intrare corespund restricțiilor impuse.") sort_cif(numere)
</syntaxhighlight>