Pagini recente » Cod sursa (job #1374924) | Cod sursa (job #226037) | Cod sursa (job #2378892) | Cod sursa (job #1596631) | Cod sursa (job #1206332)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("divprim.in");
ofstream fout ("divprim.out");
const int N = 1e6 + 5;
int phi[N], t, n, k;
vector <int> divp[8];
int main() {
for (int i = 2; i < N; i += 2)
phi[i]++;
for (int i = 3; i < N; i += 2)
if (!phi[i])
for (int j = i; j < N; j += i)
phi[j]++;
for (int p = 1; p < N; ++p)
divp[phi[p]].push_back (p);
fin >> t;
while (t--) {
fin >> n >> k;
int step = 1 << 19, sol = 0;
for (; step; step >>= 1)
if (sol + step < divp[k].size() && divp[k][sol + step] <= n)
sol += step;
if (divp[k][sol] > n)
fout << "0\n";
else
fout << divp[k][sol] << "\n";
}
}