0183 - Sort PP: Difference between revisions
Adina Timiș (talk | contribs) |
Adina Timiș (talk | contribs) No edit summary |
||
| Line 46: | Line 46: | ||
return rezultat | return rezultat | ||
if __name__ == '__main__': | |||
# citirea datelor de intrare | # citirea datelor de intrare | ||
n = int(input()) | n = int(input()) | ||
| Line 59: | Line 60: | ||
print("Datele de intrare nu corespund restricțiilor impuse.") | print("Datele de intrare nu corespund restricțiilor impuse.") | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Latest revision as of 21:50, 23 April 2023
Cerința
Să se ordoneze crescător elementele pătrat perfect ale unui şir dat, fără a afecta elementele care nu sunt pătrat perfect.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii, reprezentând elementele vectorului.
Date de ieșire
Programul afișează pe ecran, separate prin spaţii, cele n elemente ale vectorului, după sortare.
Restricții și precizări
- 1 ≤ n ≤ 1000
- cele
nnumere citite vor fi mai mici decât 50000
Exemplul 1
- Intrare
- 8
- 9 15 16 4 5 1 7 9
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 1 15 4 9 5 9 7 16
Exemplul 2
- Intrare
- 0
- 0
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare
<syntaxhighlight lang="python" line="1"> def patrat_perfect(num):
# verifică dacă un număr este pătrat perfect return int(num ** 0.5) ** 2 == num
def sorteaza_sir(lst):
# ordonează crescător elementele pătrat perfect dintr-un șir
sir = []
alte = []
for num in lst:
if patrat_perfect(num):
sir.append(num)
else:
alte.append(num)
sir.sort()
rezultat = []
for num in lst:
if patrat_perfect(num):
rezultat.append(sir.pop(0))
else:
rezultat.append(num)
return rezultat
if __name__ == '__main__':
# citirea datelor de intrare
n = int(input())
lst = list(map(int, input().split()))
# verificarea restricțiilor impuse
if n >= 1 and n <= 1000 and max(lst) < 50000:
rezultat = sorteaza_sir(lst)
print(*rezultat)
print("Datele de intrare corespund restricțiilor impuse.")
else:
print("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>