Cod sursa(job #1075855)

Utilizator andreeadeacAndreea Ioana Deac andreeadeac Data 9 ianuarie 2014 17:39:34
Problema Divizori Primi Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
using namespace std;
ifstream f("divprim.in");
ofstream g("divprim.out");
const int N=1000001;
int a[8][N],v[8],ciur[N];
int main()
{
    int i,pas,x,n,k,j,t;
    f>>t;
    for(i=2;i*i<N;i++)
        if(ciur[i]==0)
            for(j=i;j<N;j+=i)
                ciur[j]++;
    for(i=2;i<N;i++){
        x=ciur[i];
        v[x]++;
        a[x][v[x]]=i;
    }
    for(j=1;j<=t;j++){
        f>>n>>k;
        if(k==0)
            g<<"1";
        else{
            pas=1<<20;
            i=0;
            while(pas!=0){
                if(i+pas<v[k] && a[k][i+pas]<=n)
                    i+=pas;
                pas/=2;
            }
            g<<a[k][i]<<"\n";
        }
    }
    return 0;
}