Pagini recente » Cod sursa (job #98269) | Cod sursa (job #929783) | Cod sursa (job #3164358) | Cod sursa (job #2404458) | Cod sursa (job #2794803)
#include <fstream>
using namespace std;
ifstream cin("divprim.in");
ofstream cout ("divprim.out");
const int DIM=1000000;
int m[8][DIM+1];
int v[DIM+1];
bool ciur[DIM+1];
int cnt[8];
int main()
{
int n,t,k,i,j;
v[2]=1;
i=4;
while(i<=DIM)
{
v[i]++;
ciur[i]=1;
i+=2;
}
for(i=3;i<DIM;i+=2)
{
if(ciur[i]==0)
{
v[i]++;
ciur[i]=1;
j=2*i;
while(j<=DIM)
{
v[j]++;
ciur[j]=1;
j+=i;
}
}
}
for(i=1;i<=7;i++)
{
k=1;
for(j=2;j<=DIM;j++)
{
if(v[j]==i)
m[i][k++]=j;
}
cnt[i]=k-1;
}
int nr,d;
int step,p;
cin >> t;
for(i=1;i<=t;i++)
{
cin >> nr >> d;
step=1<<19;
p=0;
while(step>0)
{
if(step+p<=cnt[d])
if(m[d][step+p]<=nr)
p+=step;
step/=2;
}
cout << m[d][p]<< '\n';
}
return 0;
}