0183 - Sort PP: Difference between revisions

From Bitnami MediaWiki
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...
 
No edit summary
 
(One intermediate revision by the same user not shown)
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">
#0183 - Sort PP
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 46: Line 46:
     return rezultat
     return rezultat


def main():
 
if __name__ == '__main__':
     # citirea datelor de intrare
     # citirea datelor de intrare
     n = int(input())
     n = int(input())
Line 52: Line 53:
      
      
     # 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 59: Line 60:
         print("Datele de intrare nu corespund restricțiilor impuse.")
         print("Datele de intrare nu corespund restricțiilor impuse.")


if __name__ == '__main__':
 
    main()
   
</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 21:50, 23 April 2023

Cerința[edit | edit source]

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[edit | edit source]

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[edit | edit source]

Programul afișează pe ecran, separate prin spaţii, cele n elemente ale vectorului, după sortare.

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

  • 1 ≤ n ≤ 1000
  • cele n numere citite vor fi mai mici decât 50000

Exemplul 1[edit | edit source]

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[edit | edit source]

Intrare
0
0
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare[edit | edit source]

<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>