题目链接:https://bzoj.org/p/3758
Description
给你一个数字N,再给个数字K
将N的所有约数从小到大排好,求第K个约数,如果不存在输出-1
Input
一行给出N,K
N<=1e15
K<=1e9
Output
如题
Samples
输入数据 1
4 2
输出数据 1
2
当我刚开始看见这个时,有点退缩的感觉:
尝试: 7 已通过: 2 难度: 10
但是,我开始做的时候,才发现:
原来这么简单!
Sol:做一个for循环,再标记第ans个(开始时ans为0)数是几,如果ans=k就break.
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{long long n,k,ans=0;cin>>n>>k;for(long long i=1;i<=n;i++){long long l=0;if(n%i==0){l=i;ans++;}if(ans==k){cout<<l;return 0;}}cout<<"-1";return 0;
}
创作不易,点个赞再走吧!