Rezolvare completă PbInfo #2031 MDiv

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.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema MDiv:

// Todoran Alexandru Raul, clasa a V-a, Colegiul National Aurel Vlaicu Orastie
#include <iostream>
#include <fstream>
using namespace std;
int n,a,x[1000002],r[1000002],m,i,o,s,mx;
int main()
{
    ifstream fin ("mdiv.in");
    ofstream fout ("mdiv.out");
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>a;
        if(a>mx)mx=a;
        x[a]++;
    }
    fin>>m;
    for(i=1;i<=m;i++)
    {
        fin>>a;
        if(r[a]==0)
        {
            if(a!=1)
                for(o=0;o<=mx;o+=a)r[a]+=x[o];
            else r[a]=n;
        }
        fout<<r[a]<<"\n";
    }
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #2031 MDiv

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2031 MDiv de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!