zoukankan      html  css  js  c++  java
  • vector、set 练习 k-th divisor

    k-th divisor

    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 ≤ 10151 ≤ k ≤ 109).

    Output

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

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

    Example

    Input
    4 2
    Output
    2
    Input
    5 3
    Output
    -1
    Input
    12 5
    Output
    6
    代码实现:
     1 #include<cstdio>
     2 #include <set>
     3 #include<vector>
     4 #include<iostream>
     5 #include<algorithm>
     6 #include<cmath>
     7 using namespace std;
     8 int main()
     9 {
    10     set<long long int>a;
    11     long long int n,k;
    12     long long int p1,pp;
    13     scanf("%lld%lld",&n,&k);
    14     pp=sqrt(n);
    15     for(int i=1; i<=pp; i++)
    16     {
    17         p1=n%i;
    18         if(p1==0)
    19         {
    20             a.insert(n/i);
    21             a.insert(i);
    22         }
    23     }
    24     vector<long long int>v;
    25     insert_iterator<vector<long long int> > in_it(v, v.begin());
    26     copy(a.begin(), a.end(), in_it);
    27     //printf("%d
    ",v.size());
    28     if(k>v.size())
    29         printf("-1
    ");
    30 
    31     else
    32     {
    33         printf("%lld
    ", v[k-1]);
    34     }
    35 
    36     return 0;
    37 }
     
  • 相关阅读:
    Restful API
    Vue之指令
    Scrapy框架
    爬虫提高性能:串行、线程进程、异步非阻塞
    MongoDB
    Beautifulsoup模块
    请求库之selenium
    php 正则匹配中文
    Javascript的"预编译"思考
    PHP程序员面试技巧之口试题分享
  • 原文地址:https://www.cnblogs.com/2016024291-/p/7043896.html
Copyright © 2011-2022 走看看