FJUT T2455 Morning_X的小学数学
题解:
题意简单,但是用常规方法肯定会超时,并且数据范围超出了int型范围。故这里用STL中的vector来存储数据,并折半遍历,缩短查找时间。
代码
#include<cstdio>
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
int main(){
ll n,k;
vector<ll> v;
cin >> n >>k;
v.clear();
for(ll i = 1;i*i <= n;++i){
if(n%i == 0) v.push_back(i);
if(n%i == 0 && i*i != n) v.push_back(n/i);
}
sort(v.begin(),v.end());
if(k > v.size()) puts("-1");
else cout << v[k-1] << endl;
return 0;
}