Pagini recente » Istoria paginii runda/simulareoji1/clasament | Istoria paginii runda/bogdyas | Monitorul de evaluare | Cod sursa (job #2012159) | Cod sursa (job #2012157)
#include<fstream>
#include<vector>
using namespace std;
ifstream in ("divprim.in" );
ofstream out("divprim.out");
int mid,st,dr,n,k,t,i,j,alfa;
pair<int,int>hz[1000005];
vector<int>dp[10];
int main(){
hz[0].first = 1;
hz[0].second = 0;
hz[1].first = 1;
hz[1].second = 0;
for( i = 2; i <= 1000000; i ++ ){
if( hz[i].first == 0 ){
hz[i].second++;
for( j = i + i; j <= 1000000; j += i ){
hz[j].first = 1;
hz[j].second ++;
}
}
}
for( i = 1; i <= 1000000; i ++ ){
if( hz[i].second >= 1 && hz[i].second<= 7 )
dp[hz[i].second].push_back(i);
}
in >> t;
for( i = 1; i <= t; i ++ ){
in >> n >> k; st =0; dr =0;
for( st = 0, dr = dp[k].size()-1; st <= dr; ){
mid = ( st + dr ) >> 1;
if( dp[k][mid] <= n ){
st = mid + 1;
}
else{
dr = mid - 1;
}
}
if( dp[k].empty() == 0 && dp[k][dr] <= n )
out<<dp[k][dr]<<"\n";
else{
out<<0<<"\n";
}
}
return 0;
}