Cerința
Se dau n
perechi de numere naturale, x
şi k
. Verificaţi pentru fiecare număr x
dacă este produs de k
numere prime distincte.
Date de intrare
Fișierul de intrare eratostene7.in
conține pe prima linie numărul n
, iar pe următoarele n
linii câte o pereche de numere x
şi k
, separate prin spaţiu.
Date de ieșire
Fișierul de ieșire eratostene7.out
va conține pe primele n
linii cuvântul DA
sau NU
corespunzător celei de-a n
-a perechi din fişierul de intrare.
Restricții și precizări
1 ≤ n ≤ 100.000
1 ≤ x ≤ 1.000.000
1 ≤ k ≤ 100
Exemplu
eratostene7.in
3 20 3 30 3 49 2
eratostene7.out
NU DA NU
Explicație
Numărul 20
nu este produs de 3
numere prime distincte, 30=2•3•5
este produs de trei numere prime distincte, 49
nu este produs de 2
numere prime distincte.
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 Eratostene7:
#include <fstream>
#define N 1000000
using namespace std;
ifstream f("eratostene7.in");
ofstream g("eratostene7.out");
int prod[N+1], p[N+1], fr[N+1];
int i, j, k, x, n;
int main()
{
p[1] = 1;
for(i = 1; i <= N; i++)
prod[i] = 1;
for(i = 2; i <= N; i++)
if(p[i]==0){
fr[i] = 1;
prod[i] = i;
j = i+i;
while(j <= N){
p[j] = 1;
fr[j]++;
prod[j] *= i;
j = j + i;
}
}
f >> n;
for(i = 1; i <= n; i++){
f >> x >> k;
if(fr[x] != k) g << "NU\n";
else if(prod[x]==x) g << "DA\n";
else g << "NU\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 .
Rezolvarea problemei #3318 Eratostene7
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3318 Eratostene7 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!