2702 - PerechiSosete: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/2702/perechisosete- PerechiSosete] ---- == Cerinţa == Andrei lucrează într-un magazin de șosete, iar fiecare șosetă are asociat un numar întreg pentru a o identifica mai ușor din ce model face parte. Dându-se un '''vector''' neordonat de astfel de coduri, aflați câte perechi de șosete se pot forma. == Date de intrare == Programul citește de la tastatură numărul '''numar_sosete''', iar apoi '''numar_sosete''' numere natura...
 
No edit summary
 
Line 45: Line 45:




def conform_restrictiilor():
def conform_restrictiilor(vector, numar_sosete):
     numar_sosete = int(input())
     numar_sosete = int(input())
     if numar_sosete < 1 or numar_sosete > 100:
     if numar_sosete < 1 or numar_sosete > 100:
         print("Datele nu sunt comform restricțiilor impuse.")
         print("Datele nu sunt comform restricțiilor impuse.")
         exit()
         return False
     vector = list(map(int, input().split()))
     vector = list(map(int, input().split()))
     for x in vector:
     for x in vector:
         if x > 100 or x < 1:
         if x > 100 or x < 1:
             print("Datele nu sunt comform restricțiilor impuse.")
             print("Datele nu sunt comform restricțiilor impuse.")
             exit()
             return False
     print("Datele sunt corecte.")
     print("Datele sunt corecte.")
     return vector, numar_sosete
     return True




if __name__ == '__main__':
if __name__ == '__main__':
     vector, numar_sosete = conform_restrictiilor()
    numar_sosete = int(input())
    numarare_sosete(vector, numar_sosete)
     vector = list(map(int, input().split()))
    if conform_restrictiilor(vector, numarare_sosete) is True:
        numarare_sosete(vector, numar_sosete)
 
 
 
</syntaxhighlight>
 
==Explicaţie cod==


Acest cod are ca scop numărarea numărului total de perechi de șosete potrivite dintr-un vector și verificarea dacă datele din vector și numărul de șosete îndeplinesc anumite restricții.


Funcția '''numarare_sosete''' primește un '''vector''' de numere întregi și numărul total de șosete. Această funcție calculează numărul total de perechi de șosete potrivite din '''vector'''. Acesta parcurge fiecare număr de la 0 la numărul total de șosete și adaugă jumătate din numărul de șosete potrivite în variabila '''numar_total_sosete'''. Deoarece fiecare pereche de șosete potrivite contribuie cu o jumatate la numărul total de șosete potrivite, folosim operatorul de divizare întreagă '''//''' pentru a asigura că adăugăm întotdeauna un număr întreg de perechi la numărul total.


Funcția '''conform_restrictiilor''' primește un vector și numărul total de șosete ca argumente și verifică dacă datele îndeplinesc anumite restricții. Mai precis, verifică dacă numărul total de șosete este între 1 și 100 inclusiv, dacă fiecare element din '''vector''' este între 1 și 100 inclusiv. Dacă datele îndeplinesc aceste restricții, funcția returnează '''True''', altfel returnează '''False''' și afișează un mesaj de eroare.


</syntaxhighlight>
În blocul principal al codului, se primește input-ul sub formă de vector și numărul total de șosete și se verifică dacă datele îndeplinesc restricțiile impuse, folosind funcția '''conform_restrictiilor'''. Dacă datele sunt conforme, se calculează numărul total de perechi de șosete potrivite din vector, folosind funcția '''numarare_sosete'''.

Latest revision as of 13:07, 30 April 2023

Sursa: PerechiSosete


Cerinţa[edit | edit source]

Andrei lucrează într-un magazin de șosete, iar fiecare șosetă are asociat un numar întreg pentru a o identifica mai ușor din ce model face parte. Dându-se un vector neordonat de astfel de coduri, aflați câte perechi de șosete se pot forma.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul numar_sosete, iar apoi numar_sosete numere naturale, separate prin spații.

Date de ieșire[edit | edit source]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte.", iar apoi se va afișa pe ecran pe ecran numărul de perechi care se pot forma. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".

Restricţii şi precizări[edit | edit source]

  • 1 ⩽ numar_sosete ⩽ 100
  • Codurile șosetelor sunt cuprinse în intervalul [1, 100]

Exemple[edit | edit source]

Exemplul 1[edit | edit source]

Intrare
10
1 3 2 1 2 2 1 2 1 2
Ieșire
Datele sunt corecte.
4

Exemplul 2[edit | edit source]

Intrare
10
100 10000 100 20 1 20 30 10 98 99
Ieșire
Datele nu corespund restricțiilor impuse.

Exemplul 3[edit | edit source]

Intrare
5
1 2 3 4 5
Ieșire
Datele sunt corecte.
0


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 2702 PerechiSosete

def numarare_sosete(vector, numar_sosete):

   numar_total_sosete = 0
   for i in range(numar_sosete):
       numar_total_sosete += vector.count(i) // 2
   print(numar_total_sosete)


def conform_restrictiilor(vector, numar_sosete):

   numar_sosete = int(input())
   if numar_sosete < 1 or numar_sosete > 100:
       print("Datele nu sunt comform restricțiilor impuse.")
       return False
   vector = list(map(int, input().split()))
   for x in vector:
       if x > 100 or x < 1:
           print("Datele nu sunt comform restricțiilor impuse.")
           return False
   print("Datele sunt corecte.")
   return True


if __name__ == '__main__':

   numar_sosete = int(input())
   vector = list(map(int, input().split()))
   if conform_restrictiilor(vector, numarare_sosete) is True:
       numarare_sosete(vector, numar_sosete)


</syntaxhighlight>

Explicaţie cod[edit | edit source]

Acest cod are ca scop numărarea numărului total de perechi de șosete potrivite dintr-un vector și verificarea dacă datele din vector și numărul de șosete îndeplinesc anumite restricții.

Funcția numarare_sosete primește un vector de numere întregi și numărul total de șosete. Această funcție calculează numărul total de perechi de șosete potrivite din vector. Acesta parcurge fiecare număr de la 0 la numărul total de șosete și adaugă jumătate din numărul de șosete potrivite în variabila numar_total_sosete. Deoarece fiecare pereche de șosete potrivite contribuie cu o jumatate la numărul total de șosete potrivite, folosim operatorul de divizare întreagă // pentru a asigura că adăugăm întotdeauna un număr întreg de perechi la numărul total.

Funcția conform_restrictiilor primește un vector și numărul total de șosete ca argumente și verifică dacă datele îndeplinesc anumite restricții. Mai precis, verifică dacă numărul total de șosete este între 1 și 100 inclusiv, dacă fiecare element din vector este între 1 și 100 inclusiv. Dacă datele îndeplinesc aceste restricții, funcția returnează True, altfel returnează False și afișează un mesaj de eroare.

În blocul principal al codului, se primește input-ul sub formă de vector și numărul total de șosete și se verifică dacă datele îndeplinesc restricțiile impuse, folosind funcția conform_restrictiilor. Dacă datele sunt conforme, se calculează numărul total de perechi de șosete potrivite din vector, folosind funcția numarare_sosete.