AMR11E

AMR11E spoj solution
#include<iostream>

#define N 3000

#include<cmath>

#include<cstdio>

using namespace std;

int prime[N+1];



void sieve(){

    prime[0]=1;

    prime[1]=1;

    for(long long i=2;i<=N;i++){

        if(!prime[i]){

                        prime[i]=i;

            for(long long j=i;j*i<=N;j++){

                prime[j*i]=i;

            }

        }

    }

}



int primeFactorize(int n){

    int ct=0,flag=0;
    for( ; n > 1 ; ){

        int p = prime[n] , e = 0 ;

        for( ; n % p == 0 ; n /= p , e++ ) ;

       ct++;
    if(ct==3){flag=1;break;}
    }
    return flag;

}





int main()

{

  

    sieve();

   int t;

   scanf("%d",&t);
    int tp[1000],ct=0;

   for(int i=30;i<3000;i++)
    {
        if(primeFactorize(i))tp[ct++]=i;
        if(ct==1000)break;

    }
  while(t--)

   {

    int n;

    scanf("%d",&n);
    printf("%d\n",tp[n-1]);            

   }

   

   return 0;

}

No comments:

Post a Comment