Fie X un vector de numere naturale distincte, de dimensiune N, X = (x[1], x[2], …, x[N]). Se dă un număr natural Q, apoi Q întrebări de forma: “Câţi divizori ai lui Qi se află în şirul X?”.
Cerința
Răspundeţi la cele Q întrebări.
Date de intrare
Fișierul de intrare divizori1.in conține:
- Pe prima linie
2numereNșiQ, reprezentând dimensiunea luiXşi numărul de întrebări; - Pe a doua linie se găsesc
Nnumere separate prin spaţiu, reprezentând elementele vectoruluiX. - Pe următoarele
Qlinii se găsesc celeQîntrebări, reprezentate printr-un numărQipe fiecare linie.
Date de ieșire
Fișierul de ieșire divizori1.out va conține:
Qlinii, fiecare liniei, reprezentând răspunsul pentruQi.
Restricții și precizări
1 ≤ N, Q ≤ 10.0001 ≤ Qi, Xi ≤ 100.000
Exemplu
divizori1.in
5 2 6 2 3 12 4 6 12
divizori1.out
3 5
Explicație
6 conţine 3 divizori în şir(6, 2, 3).
12 conţine 5 divizori în şir(6, 2, 3, 12, 4).
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 Divizori1:
//Dragan Andrei Gabriel
//University of Bucharest
#include <cstdio>
using namespace std;
int v[100001], N, X, Q, nr;
int main()
{
freopen("divizori1.in", "r", stdin);
freopen("divizori1.out", "w", stdout);
scanf("%d %d", &N, &Q);
for (int i = 1; i <= N; i++)
{
scanf("%d", &X);
for (int j = X; j <= 100000; j += X)
v[j]++;
}
for (int i = 1; i <= Q; i++)
{
scanf("%d", &X);
printf("%d\n", v[X]);
}
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
.
Rezolvarea problemei #1596 Divizori1
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1596 Divizori1 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!