Cod sursa(job #1174265)

Utilizator alevasluialeHuhurez Marius alevasluiale Data 22 aprilie 2014 14:23:45
Problema Divizori Primi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <bitset>
using namespace std;
bitset<1000000> v;
short p[1000001];
ifstream fin("divprim.in");
ofstream fout("divprim.out");
int dp[1000001][8];
inline void ciur()
{
    int i,j;
    p[0]=p[1]=0;
    for(i=3;i*i<=1000000;i+=2)
    {
        if(!v[i]) for(j=i*i;j<=1000000;j+=i) v[j]=1;
    }
    for(i=2;i<=1000000;i+=2) p[i]++;
    for(i=3;i<=1000000;i+=2)
    {
        if(!v[i]) for(j=i;j<=1000000;j+=i) p[j]++;
    }
}
inline void construire()
{
    int i,j;
    for(i=2;i<=1000000;i++)
    {
        for(j=0;j<=7;j++) dp[i][j]=dp[i-1][j];
        dp[i][p[i]]=i;
    }
}
int main()
{
    int t,n,i,k;
    fin>>t;
    ciur();
    construire();
    for(i=0;i<t;i++)
    {
        fin>>n>>k;
        fout<<dp[n][k]<<"\n";
    }
}