0183 - Sort PP: Difference between revisions
Adina Timiș (talk | contribs) Pagină nouă: ==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 ==Exemplul... |
Adina Timiș (talk | contribs) |
||
Line 8: | Line 8: | ||
==Restricții și precizări== | ==Restricții și precizări== | ||
*1 ≤ n ≤ 1000 | *1 ≤ n ≤ 1000 | ||
*cele <code>n</code> numere citite vor fi mai mici decât 50000 | |||
==Exemplul 1== | ==Exemplul 1== | ||
;Intrare | ;Intrare | ||
Line 22: | Line 23: | ||
:Datele de intrare nu corespund restricțiilor impuse. | :Datele de intrare nu corespund restricțiilor impuse. | ||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python" line=""> | <syntaxhighlight lang="python" line="1"> | ||
def patrat_perfect(num): | def patrat_perfect(num): | ||
# verifică dacă un număr este pătrat perfect | # verifică dacă un număr este pătrat perfect | ||
Line 52: | Line 52: | ||
# verificarea restricțiilor impuse | # verificarea restricțiilor impuse | ||
if n >= 1 and n <= 1000: | if n >= 1 and n <= 1000 and max(lst) < 50000: | ||
rezultat = sorteaza_sir(lst) | rezultat = sorteaza_sir(lst) | ||
print(*rezultat) | print(*rezultat) | ||
Line 61: | Line 61: | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
main() | main() | ||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 23:07, 16 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
n
numere 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
def 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.")
if __name__ == '__main__':
main()
</syntaxhighlight>