Codefroces 762A k-th divisor 数论
2024-08-30 02:24:01
题目大意:
给定两个正整数n,k\((n \le 10^{15},k\leq10^9)\),求n的从小到大的第k个约数,无解输出-1
分析:
我们会自然而然地想到找出n的所有的约数,然后取第k个。
我们发现如果这样的话时间复杂度为\(O(\sqrt{n})\),空间复杂度为\(O(lnn)\)
所以我们暴力上就好了
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
typedef long long ll;
template<typename T>inline void read(T &x){
x=0;char ch;bool flag = false;
while(ch=getchar(),ch<'!');if(ch == '-') ch=getchar(),flag = true;
while(x=10*x+ch-'0',ch=getchar(),ch>'!');if(flag) x=-x;
}
inline ll cat_max(const ll &a,const ll &b){return a>b ? a:b;}
inline ll cat_min(const ll &a,const ll &b){return a<b ? a:b;}
ll a[2000010],cnt1;
ll b[2000010],cnt2;
int main(){
ll n,k;read(n);read(k);
for(ll i=1;i*i<=n;++i){
if(n % i == 0){
a[++cnt1] = i;
if(i*i != n) b[++cnt2] = n/i;
}
}
if(k > cnt1 + cnt2) puts("-1");
else{
if(k <= cnt1){
printf("%I64d\n",a[k]);
}else{
k -= cnt1;
printf("%I64d\n",b[cnt2-k+1]);
}
}
getchar();getchar();
return 0;
}
最新文章
- MySQL binlog中的事件类型
- Title Case a Sentence
- MINA系列学习-mina整体介绍
- touch id 开发
- 学习进度条<;第一周>;
- JavaScript escape encodeURI encodeURIComponent() 函数
- C++调用matlab实例
- java 串口通信 代码
- Centos 下Nginx 自启动脚本
- spring getbean 方法分析
- C# ToString()和Convert.ToString()的区别
- iOS开发——导入第三方库引起的unknown type name &#39;NSString&#39;
- Java 基本文件操作
- Android TextView自动换行、排列错乱问题及解决
- Servlet】(2)有关Servlet实现的几个类:GenericServlet、HttpServlet、ServletConfig、ServletContext
- 函数和常用模块【day04】:函数的非固定参数(三)
- centos6安装python3.6.4
- 潭州课堂25班:Ph201805201 WEB 之 页面编写 第一课 (课堂笔记)
- Java 枚举类 详解
- BZOJ1185 [HNOI2007]最小矩形覆盖 【旋转卡壳】