1010 - produs: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/1010/produs - produs] ---- == Cerinţa == Se dau două șiruri cu câte '''n''', respectiv '''m''' elemente. Dacă înmulțim fiecare element din primul șir cu fiecare element din al doilea șir, să se afle câte produse sunt mai mici decât '''p'''. == Date de intrare == Programul citește de la tastatură numerele '''n''' și '''p''', iar apoi '''n''' numere naturale, separate prin spații, reprezentând elementele primului șir, dup...
 
No edit summary
 
Line 54: Line 54:




def conform_restrictiilor():
def conform_restrictiilor(vector, n, vector_2, m, p):
    n, p = map(int, input().split())
     if n < 1 or n > 50000:
     if n < 1 or n > 50000:
         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()))
     for x in vector:
     for x in vector:
         if x > 10000 or x < 0:
         if x > 10000 or x < 0:
             print("Datele nu sunt comform restricțiilor impuse.")
             print("Datele nu sunt comform restricțiilor impuse.")
             exit()
             return False
    m = int(input())
     if m < 1 or m > 50000:
     if m < 1 or m > 50000:
         print("Datele nu sunt comform restricțiilor impuse.")
         print("Datele nu sunt comform restricțiilor impuse.")
         exit()
         return False
    vector_2 = list(map(int, input().split()))
     for x in vector_2:
     for x in vector_2:
         if x > 10000 or x < 0:
         if x > 10000 or x < 0:
             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, n, vector_2, m, p
     return True




if __name__ == '__main__':
if __name__ == '__main__':
     vector, n, vector_2, m, p = conform_restrictiilor()
    n, p = map(int, input().split())
    numere(vector, n, vector_2, m, p)
     vector = list(map(int, input().split()))
    m = int(input())
    vector_2 = list(map(int, input().split()))
    if conform_restrictiilor(vector, n, vector_2, m, p) is True:
        numere(vector, n, vector_2, m, p)




</syntaxhighlight>
</syntaxhighlight>
==Explicaţie cod==
Acesta este un program care primește ca input 2 vectori și un număr întreg, apoi verifică dacă datele de intrare sunt conforme cu restricțiile impuse, după care calculează numărul de perechi de elemente din cele două vectori ale căror produs este mai mic decât numărul întreg dat.
Funcția '''conform_restrictiilor''' verifică dacă valorile date ca input sunt conforme cu următoarele restricții:
  '''n''' și '''m''' trebuie să fie între 1 și 50000
  valorile vectorilor trebuie să fie între 0 și 10000
Dacă valorile de intrare sunt conforme cu restricțiile, se afișează "Datele sunt corecte." și se returnează True, altfel se afișează "Datele nu sunt conforme restricțiilor impuse." și se returnează False.
Funcția '''numere''' primește cei doi vectori, lungimile lor și numărul întreg '''p'''. Folosind o buclă for dublă, calculează numărul de perechi ale căror produs este mai mic decât '''p'''.
În funcția '''main''', se citesc cele patru valori de intrare, apoi se apelează funcția '''conform_restrictiilor''' pentru a verifica dacă datele sunt conforme. Dacă sunt conforme, se apelează funcția numere pentru a calcula numărul de perechi ale căror produs este mai mic decât '''p'''.

Latest revision as of 14:12, 30 April 2023

Sursa: - produs


Cerinţa[edit | edit source]

Se dau două șiruri cu câte n, respectiv m elemente. Dacă înmulțim fiecare element din primul șir cu fiecare element din al doilea șir, să se afle câte produse sunt mai mici decât p.

Date de intrare[edit | edit source]

Programul citește de la tastatură numerele n și p, iar apoi n numere naturale, separate prin spații, reprezentând elementele primului șir, după care citește numărul m urmat de m numere naturale, reprezentând elementele celui de-al doilea șir.

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 numărul nr, reprezentând numărul produselor mai mici decât p. Î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 ≤ p ≤ 200.000
  • 1 ≤ n , m ≤ 50.000
  • elementele celor două șiruri sunt numere naturale mai mici decât 10.000

Exemple[edit | edit source]

Exemplul 1[edit | edit source]

Intrare
5 99
1 2 3 4 5
2
25 34
Ieșire
Datele sunt corecte.
5

Exemplul 2[edit | edit source]

Intrare
4 10
10 2 6341 46541242
2
2541412 341212
Ieșire
Datele nu corespund restricțiilor impuse.

Exemplul 3[edit | edit source]

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


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 1010 produs

def numere(vector, n, vector_2, m, p):

   nr = 0
   for i in vector:
       for j in vector_2:
           if i * j < p:
               nr += 1
   print(nr)


def conform_restrictiilor(vector, n, vector_2, m, p):

   if n < 1 or n > 50000:
       print("Datele nu sunt comform restricțiilor impuse.")
       return False
   for x in vector:
       if x > 10000 or x < 0:
           print("Datele nu sunt comform restricțiilor impuse.")
           return False
   if m < 1 or m > 50000:
       print("Datele nu sunt comform restricțiilor impuse.")
       return False
   for x in vector_2:
       if x > 10000 or x < 0:
           print("Datele nu sunt comform restricțiilor impuse.")
           return False
   print("Datele sunt corecte.")
   return True


if __name__ == '__main__':

   n, p = map(int, input().split())
   vector = list(map(int, input().split()))
   m = int(input())
   vector_2 = list(map(int, input().split()))
   if conform_restrictiilor(vector, n, vector_2, m, p) is True:
       numere(vector, n, vector_2, m, p)


</syntaxhighlight>

Explicaţie cod[edit | edit source]

Acesta este un program care primește ca input 2 vectori și un număr întreg, apoi verifică dacă datele de intrare sunt conforme cu restricțiile impuse, după care calculează numărul de perechi de elemente din cele două vectori ale căror produs este mai mic decât numărul întreg dat.

Funcția conform_restrictiilor verifică dacă valorile date ca input sunt conforme cu următoarele restricții:

  n și m trebuie să fie între 1 și 50000
  valorile vectorilor trebuie să fie între 0 și 10000

Dacă valorile de intrare sunt conforme cu restricțiile, se afișează "Datele sunt corecte." și se returnează True, altfel se afișează "Datele nu sunt conforme restricțiilor impuse." și se returnează False.

Funcția numere primește cei doi vectori, lungimile lor și numărul întreg p. Folosind o buclă for dublă, calculează numărul de perechi ale căror produs este mai mic decât p.

În funcția main, se citesc cele patru valori de intrare, apoi se apelează funcția conform_restrictiilor pentru a verifica dacă datele sunt conforme. Dacă sunt conforme, se apelează funcția numere pentru a calcula numărul de perechi ale căror produs este mai mic decât p.