Codeforces 762A k-th divisor(数论)
2024-08-27 18:01:01
题目链接:k-th divisor
求出N的第K大因子,满足N <= 10^15,K <= 10^9
直接暴力……
#include <bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i(a); i <= (b); ++i)
#define LL long long LL n, k, h, ans;
int num; int main(){ scanf("%lld%lld", &n, &k);
h = (LL)sqrt(n + 0.5);
if (h * h == n){
rep(i, , h - ) if (n % i == ) num += ;
++num;
}
else{ rep(i, , h) if (n % i == ) num += ; } if (num < k){ puts("-1"); return ; } if (h * h == n){
int cnt = ;
if (k <= num / ){
rep(i, , h) if (n % i == ){
++cnt;
if (cnt == k){
ans = i;
break;
}
}
} else if (k == num / + ){
printf("%lld\n", h);
return ;
} else{
int m = k - num / - ;
int ret = num / - m + ;
rep(i, , h) if (n % i == ){
++cnt;
if (cnt == ret){
ans = n / i;
break;
}
}
}
} else
{
int cnt = ;
if (k <= num / ){
rep(i, , h) if (n % i == ){
++cnt;
if (cnt == k){
ans = i;
break;
}
}
} else{
int m = k - num / , cnt = ;
int ret = num / - m + ;
rep(i, , h) if (n % i == ){
++cnt;
if (cnt == ret){
ans = n / i;
break;
}
}
}
} printf("%lld\n", ans);
return ; }
最新文章
- java 500/404错误总结
- Chromium源码--视频播放流程分析(拨开云雾)
- MatLab GUI Change Size 改变界面大小
- PHP 文件系统管理函数与 preg_replace() 函数过滤代码
- Java编程思想学习笔记_2(继承和多态)
- 第1个linux命令——echo
- 3D模型选中显示样式改变
- Nginx代理转发Apache+svn
- slf4j 与各个 logging框架的适配器说明
- OA系统开发人事模块关于请假跨月的处理
- Python OpenCV 图像处理初级使用
- Linux—shell中$(( ))、$( )、``与${ }的区别
- undo系统参数详解
- PAT乙级考前总结(二)
- 让Entity Framework不再私闯sys.databases
- HDU 4635 Strongly connected (强连通分量+缩点)
- HTML-表格-列表-结构标记-表单
- js实现oss文件上传及一些问题
- mac OS X下Java项目环境搭建+IntelliJ IDEA Jrebel插件安装与破解+Office 2016破解版安装
- js的event.preventDefault()与event.stopPropagation()