题目大意:bzoj题面有毒……
题解:Orz
我的收获:由于一个数的质因数往往很少,质因数分解是不错的选择
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <queue>
using namespace std;
#define M 160
#define B 128
int k,cnt,c[M];
bool vis[M];
long long n,x;
struct node{long long t;int x,y,z;};
bool operator <(node u,node v){return u.t<v.t;}
priority_queue<node> q;
void work()
{
while(k--){
node u=q.top();q.pop();
if(!k) printf("%lld\n",u.t); else
if(u.y>1) for(int i=1;i<=u.z;i++) q.push((node){u.t/u.x*c[i],u.x,u.y-1,i});
}
}
void init()
{
scanf("%lld%d",&n,&k);
for(int i=2;i<B;i++){
if(!vis[i]){
x=i;c[++cnt]=i;
for(int j=1;x<=n;j++,x*=i) q.push((node){x,i,j,cnt-1});
}
for(int j=i+i;j<B;j+=i) vis[j]=1;
}
}
int main()
{
init();
work();
return 0;
}