Pagini recente » Cod sursa (job #254735) | Cod sursa (job #2311122) | Cod sursa (job #1525905) | tema33 | Cod sursa (job #2471975)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("divprim.in");
ofstream fout ("divprim.out");
const int nr_max=105;
int ciur[nr_max];
vector <int> a[8];
void Ciur ()
{
ciur[1]=0;
for(int i=2; i<=nr_max; i++)
{
if(!ciur[i])
{
for(int j=i; j<=nr_max; j+=i)
ciur[j]++;
}
}
}
void generare ()
{
for(int i=1; i<=7; i++)
{
for(int j=2; j<=nr_max; j++)
{
if(ciur[j]==i)
a[i].push_back (j);
}
}
}
int caut_Binar (int x, int i, int left, int right)
{
if(right-1==left && a[i][left]<=x)
return left;
else
if(right==left)
return -1;
int mid=(left+right)/2;
if(x>a[i][mid])
caut_Binar(x, i, mid, right);
else
if(x<a[i][mid])
caut_Binar(x, i, left, mid);
/*else
return mid;*/
}
int main()
{
int t, n, k;
fin>>t;
Ciur();
generare();
/*for (int i = 0; i < 10; i++)
cout << a[2][i] << " ";
cout << "\n";*/
for(int i=0; i<t; i++)
{
fin>>n>>k;
int caut = caut_Binar(n, k, 0, a[k].size());
if(caut==-1)
cout<<"0"<<"\n";
else
cout<<a[k][caut]<<"\n";
}
return 0;
}