Cod sursa(job #1174572)

Utilizator chiriacandrei25Chiriac Andrei chiriacandrei25 Data 23 aprilie 2014 13:23:22
Problema Divizori Primi Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>
#define Nmax 1000005

using namespace std;

int diviz[Nmax+5],dp[Nmax+5][10];

inline void PreCalcul()
{
    int i,j;
    for(i=2;i<=Nmax;i+=2)
        diviz[i]=1;
    for(i=3;i<=500000;i+=2)
        if(!diviz[i])
            for(j=i;j<=Nmax;j+=i)
                ++diviz[j];
    dp[1][0]=1;
    for(i=1;i<=Nmax;++i)
        for(j=0;j<=7;++j)
            if(diviz[i]==j)
                dp[i][j]=i;
            else
                dp[i][j]=dp[i-1][j];
}

int main()
{
    int i,x,k,M;
    freopen ("divprim.in","r",stdin);
    freopen ("divprim.out","w",stdout);
    PreCalcul();
    scanf("%d", &M);
    while(M--)
    {
        scanf("%d%d", &x,&k);
        printf("%d\n", dp[x][k]);
    }
    return 0;
}