Pagini recente » Cod sursa (job #2908727) | Cod sursa (job #2038892) | Cod sursa (job #1666475) | Cod sursa (job #2700845) | Cod sursa (job #355259)
Cod sursa(job #355259)
#include<cstdio>
#include<vector>
using namespace std ;
const int NMAX = 1<<20 ;
int a[8][1<<20] ;
short int v [ NMAX ] ;
void preg ( )
{
int i , j ;
for ( i = 2 ; i <= NMAX ; i ++ )
if ( v[i] == 0 )
for ( j = i ; j <= NMAX ; j += i )
v[j] ++ ;
for ( i = 2 ; i <= NMAX ; i ++ )
a [ v[i] ] [++a[v[i]][0]] = i ;
}
int caut ( int val , int x[] , int n )
{
int pas = 1 << 19 , i ;
for ( i = 0 ; pas ; pas >>=1 )
if ( i+pas <= n && x[i+pas] <= val )
i+= pas ;
if ( x[i] > val || i==0) return 0 ;
return x[i] ;
}
int main ( )
{
freopen ( "divprim.in" , "r" , stdin ) ;
freopen ( "divprim.out" , "w" , stdout ) ;
int T , n , k , i ;
scanf ( "%d" , & T ) ;
preg ( ) ;
for ( i = 1 ; i <= T ; i ++ )
{
scanf ( "%d%d" , & n , & k ) ;
printf ( "%d\n" , caut ( n , a[k] , a[k][0]) ) ;
}
return 0 ;
}