第K个约数

题目链接: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;
}

创作不易,点个赞再走吧!

posted @ 2024-07-04 22:46  Ace基德  阅读(62)  评论(0)    收藏  举报