Pagini recente » Cod sursa (job #2969996) | Cod sursa (job #1834782) | Cod sursa (job #2059304) | Cod sursa (job #2980385) | Cod sursa (job #2535178)
#include <fstream>
using namespace std;
ifstream cin ("divprim.in");
ofstream cout ("divprim.out");
char ciur[1000050];
int a[10][500010];
void ciuruire()
{
int i,j;
ciur[0]=ciur[1]=0;
for (i=2; i*2<=1000010; i++)
if (ciur[i]==0)
for (j=i; j<=1000010; j=j+i)
ciur[j]++;
}
int cautare_binara(int n,int k)
{
int st,dr,poz,mijl;
st=1;
dr=a[k][0];
poz=0;
while (st<=dr)
{
mijl=(st+dr)/2;
if (a[k][mijl]>n)
dr=mijl-1;
else
{
st=mijl+1;
poz=mijl;
}
}
if (poz!=0)
return a[k][poz];
else
return 0;
}
int main()
{
int i,t,n,k;
ciuruire();
for (i=1; i<=1000000; i++)
{
a[ciur[i]][0]++;
a[ciur[i]][a[ciur[i]][0]]=i;
}
cin>>t;
for (i=1; i<=t; i++)
{
cin>>n>>k;
cout<<cautare_binara(n,k)<<"\n";
}
return 0;
}