Pagini recente » Cod sursa (job #1913000) | Cod sursa (job #2268667) | Cod sursa (job #2439278) | Cod sursa (job #513570) | Cod sursa (job #1525857)
#include <fstream>
using namespace std;
int n,k,t,v[2][1000005],v1[8][300005],i,st,dr,m;
int main()
{
ifstream f("divprim.in");
ofstream g("divprim.out");
for(i=2; i<=1000000; i+=2)
{
v[0][i]=2;
v[0][i-1]=1;
v[1][i]=i;
v[1][i-1]=i-1;
}
v[0][2]=1;
i=1;
while(i<998)
{
i+=2;
while(v[0][i])
i+=2;
for(k=i; k<=1000000; k+=i)
{
st=0;
while(v[1][k]%i==0)
{
v[1][k]/=i;
st++;
}
v[0][k]+=st;
if(v[1][k]==1) v[0][k]--;
}
}
for(i=2; i<=1000000; i++)
{
if(v[0][i]<=7)
{
v1[v[0][i]][0]++;
v1[v[0][i]][v1[v[0][i]][0]]=i;
}
}
f>>t;
while(t)
{
t--;
f>>n>>k;
st=1;
dr=v1[k][0];
while(st+1<dr)
{
m=(st+dr+1)/2;
if(v1[k][m]>n)
dr=m;
else st=m;
}
if(v1[k][dr]>n) dr=st;
g<<v1[k][dr]<<'\n';
}
f.close(); g.close();
}