1010 - produs

De la Universitas MediaWiki

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

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

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.