Pagini recente » Cod sursa (job #2024272) | Cod sursa (job #2272836) | Cod sursa (job #3173409) | Cod sursa (job #750406) | Cod sursa (job #1481650)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("divprim.in");
ofstream fout ("divprim.out");
int ciur[1000001], d[1000001][8];
//d[i][j] = cel mai mare numar natural mai mic sau egal decat i si care are exact j divizori primi.
//d[1][0] = 1;
//d[i][j] = i daca ciur[i] == j
//d[i][j] = d[i - 1][j], altfel
int main() {
int T, N, K, i, j, a;
// realizam ciurul
int p = 1000000;
for (i = 2; i <= p; i++) {
if (ciur[i] == 0) {
for (j = i; j <= p; j = j + i) {
ciur[j]++;
}
}
}
// salvarea tuturor raspunsurilor posibile
for (i = 1; i < p; i++) {
for (j = 0; j < 8; j++) {
if (ciur[i] == j) {
d[i][j] = i;
}
else {
d[i][j] = d[i - 1][j];
}
}
}
fin >> T;
while(T--) {
fin >> N >> K;
fout << d[N][K] << "\n";
}
return 0;
}