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
Programul va afișa pe ecran numărul nr
, reprezentând numărul produselor mai mici decât p
.
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
Exemplu
Intrare
5 991 2 3 4 5225 34
Ieșire
5
Explicație
Efectuând înmulțirile dintre elementele primului șir și ale celui de-al doilea obținem rezultatele: 25
, 34
, 50
, 68
, 75
, 102
, 100
, 136
, 125
, 170
. Dintre acestea 5
sunt mai mici decât 99
.
#include <bits/stdc++.h> using namespace std; int main() { int f[10001]={0} , g[10001]={0} , n , m , p; long long int c=0; cin >> n >> p ; for(int i = 0 ; i < n ; ++i) { int x; cin >> x; f[x]++; } cin >> m; for(int i =0 ; i < m ; ++i) { int x; cin >> x; g[x]++; } for(int i = 0 ; i < 10000 ; ++i) { for(int j = 0 ; j < 10000 && i * j < p ; ++j) c+=f[i]*g[j]; } cout << c; return 0; }