1010 - produs
Sursa: - 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ă care citește numărul m urmat de m numere naturale, reprezentând elementele celui de-al doilea șir.
Date de ieșire
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
- 1 ≤ p ≤ 200.000
- 1 ≤ n , m ≤ 50.000
- elementele celor două șiruri sunt numere naturale mai mici decât 10.000
Exemple
Exemplul 1
- Intrare
- 5 99
- 1 2 3 4 5
- 2
- 25 34
- Ieșire
- Datele sunt corecte.
- 5
Exemplul 2
- Intrare
- 4 10
- 10 2 6341 46541242
- 2
- 2541412 341212
- Ieșire
- Datele nu corespund restricțiilor impuse.
Exemplul 3
- Intrare
- 4 10
- 10 2 63 465
- 2
- 25 3
- Ieșire
- Datele sunt corecte.
- 1
Rezolvare
<syntaxhighlight lang="python" line>
- 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
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.