zoukankan      html  css  js  c++  java
  • codeforces762A

    codeforces762A

    You are given two integers n and k. Find k-th smallest divisor of n, or report that it doesn’t exist.

    Divisor of n is any such natural number, that n can be divided by it without remainder.

    Input
    The first line contains two integers n and k (1 ≤ n ≤ 1015, 1 ≤ k ≤ 109).

    Output
    If n has less than k divisors, output -1.

    Otherwise, output the k-th smallest divisor of n.

    Examples
    Input
    4 2
    Output
    2
    Input
    5 3
    Output
    -1
    Input
    12 5
    Output
    6
    Note
    In the first example, number 4 has three divisors: 1, 2 and 4. The second one is 2.

    In the second example, number 5 has only two divisors: 1 and 5. The third divisor doesn’t exist, so the answer is -1.

    此处使用了vector(向量),作为前面的因子以及后面的因子。
    题目大意:找到给定n的第k个最小的因子。
    求得一个因子后,可以求得另一个因子。

    #include <iostream>
    #include<stdio.h>
    #include<vector>
    using namespace std;
    typedef long long LL;
    
    int main()
    
    {
    	LL  n,k; int ans[1005];
    	LL i, j;
    	cin >> n >> k;
    	vector <LL> v1, v2;
    	for (LL i = 1; i*i <= n; i++)//对称
    	{
    		if (n%i == 0)
    		{
    			v1.push_back(i);
    			if (i*i != n)//求得一个因子后,可以求得另一个因子。
    				v2.push_back(n / i);//另一个对应的数
    		}
    	}
    
    	if (v1.size()+v2.size() < k)
    		cout << -1 << endl;
    	else
    	{
    		if (k <= v1.size())
    			cout << v1[k - 1] << endl;
    		else
    			cout << v2[v2.size() + v1.size() - k] << endl;//注意此处的-k关键,才能够保证从小到大
    	}
    	return 0;
    }
    
  • 相关阅读:
    2019 ICPC Asia Nanchang Regional E Eating Plan 离散化+前缀和
    2018icpc南京/gym101981 G Pyramid 找规律
    2018icpc沈阳/gym101955 J How Much Memory Your Code Is Using? 签到
    2018icpc南京/gym101981 K Kangaroo Puzzle 随机化
    series_02
    series_01
    locust_参数化关联
    locust_关联
    locust_单接口
    截图处理
  • 原文地址:https://www.cnblogs.com/gidear/p/11773649.html
Copyright © 2011-2022 走看看