Pagini recente » Cod sursa (job #721717) | Cod sursa (job #2066662) | Cod sursa (job #2660577) | Cod sursa (job #726622) | Cod sursa (job #3179527)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("divprim.in");
ofstream fout("divprim.out");
bitset<1000005> b;
int nrDiv[1000005];
vector<int> a[10];
void Ciur(int n)
{
for (int i = 2; i <= n; i += 2)
nrDiv[i]++;
for (int i = 3; i <= n; i += 2)
if (nrDiv[i] == 0)
{
for (int j = i; j <= n; j += i)
nrDiv[j]++;
}
}
int CB(int k, int n)
{
if (a[k][0] > n)return 0;
int St, Dr, Mij, Poz;
St = 0; Dr = a[k].size() - 1;
while (St <= Dr)
{
Mij = (St + Dr) / 2;
if (a[k][Mij] <= n)
{
Poz = Mij;
St = Mij + 1;
}
else Dr = Mij - 1;
}
return a[k][Poz];
}
int main()
{
Ciur(1000000);
for (int i = 1; i <= 1000000; i++)
a[nrDiv[i]].push_back(i);
int q, n, k, Q;
fin >> Q;
for (int q = 1; q <= Q; q++)
{
fin >> n >> k;
fout << CB(k, n) << "\n";
}
return 0;
}