题目描述
FooBar是一个非常喜欢计算机编程的学生,而且特别喜欢用计算机程序求解数值计算类的实际问题。现在他面对的问题是:对于一个正整数N,请计算并输出N的从小到大的第M个正整数因子是几?如果不存在第M个正整数因子,那么输出 -1。
输入格式
输入两个正整数 N 和 M,空格分隔 , 1≤N≤10 15, 1≤K≤10 9
输出格式
如果N存在第M个正整数因子,请输出其值;如果不存在,则输出 -1。输出完数据后请输出回车换行。
输入样例
12 5
5 3
4 2
输出样例
6
-1
2
数据范围与提示
当输入12 5的时候,求12的第5个正整数因子,答案是6
当输入5 3的时候,求5的第三个正整数因子,没有,答案是 -1
当输入4 2的时候,求4的第二个正整数因子,答案是2
注意数据的范围!
#include<iostream>
#include<vector>
#include <algorithm>
using namespace std;
int getNum(int N, int M)
{
vector<int> vc;
for (int i = 1;i <= N;i++)
{
if (N % i == 0)
vc.push_back(i);
}
if (vc.size() < M)
return -1;
else
return vc[M-1];
}
int main()
{
int N, M;
printf("输入N和M:\n");
scanf("%d %d",&N,&M);
printf("%d",getNum(N, M));
return 0;
}