fbpx

Problema #2031 – MDiv – Rezolvari PBInfo

de Mihai-Alexandru

Alexandru este elev în clasa a V-a și este foarte pasionat de informatică. Într-o zi acesta a descoperit un vector A cu N elemente și a început să se joace cu ele. Tatăl său, profesor de matematică, îi admiră ingeniozitatea și îi pune M întrebări de forma: “Câte valori din vectorul A sunt divizibile cu numărul x?”.

Cerința

Alexandru a rezolvat deja această problemă banală, așa că te provoacă și pe tine să o rezolvi!

Date de intrare

Fișierul de intrare mdiv.in conține pe prima linie numărul N. Pe a doua linie se află N numere naturale, reprezentând elementele vectorului. Pe a treia linie se află numărul M, iar pe următoarele M linii se află întrebările.

Date de ieșire

Fișierul de ieșire mdiv.out va conține M linii, pe linia i aflându-se răspunsul la întrebarea i.

Restricții și precizări

  • 1 ≤ N, M ≤ 100.000
  • fiecare valoare din vector, cât și fiecare întrebare ≤ 1.000.000 și sunt nenule.

Exemplu

mdiv.in

8
2 4 2 6 1 9 1 5
3
2
5
3

mdiv.out

4
1
2

Explicație

Numerele divizibile cu 2 sunt 2, 4, 2, 6.

#include <bits/stdc++.h>
using namespace std;
ifstream fin("mdiv.in");
ofstream fout("mdiv.out");
int a[1000001], f[1000001];
int main()
{
    int n , m , x;
    for(fin >> n ; n ; n --)
    {
        fin >> x;
        f[x]++;
    }
    for(int i = 1 ; i <= 1000000; i ++)
        for(int j = i ; j <= 1000000 ; j += i)
            if(f[j] > 0) a[i] += f[j];
    for(fin >> m ; m ; m -- )
    {
        fin >> x;
        fout << a[x] << "\n";
    }
    return 0;
}
Comentarii

S-ar putea sa iti placa