题目链接: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;
}
创作不易,点个赞再走吧!
标签:约数,输出,数字,3758,long,ans From: https://www.cnblogs.com/Ace-29/p/18284841