hdu 5019

#include <iostream>
#include <fstream>
#include <vector>
#include <cstdio>
#include <string>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <cfloat>
#include <stack>
#include <set>

using namespace std;

#ifdef DEBUG
ifstream in;
ofstream out;
#endif

#ifdef DEBUG
#define CIN  in
#define COUT  out
#else
#define CIN  cin
#define COUT cout
#endif

typedef long long int ll;

ll x, y, idx, tmp, val, last;
int cases;
vector<ll> store;

int  main(void)
{
#ifdef DEBUG
      string buffer;
      CIN.open("in", ios::in);
      COUT.open("out", ios::out);
      while(getline(CIN, buffer))
            COUT << buffer << "\n";
      COUT << "Out Put" << "\n";
      CIN.close();
      CIN.open("in", ios::in);
#endif
      CIN >> cases;
      for(int caseCurr = 1; caseCurr <= cases; caseCurr++){
            CIN >> x >> y >> idx;
            store.clear();
            while(y){
                tmp = x%y;
                x   = y;
                y   = tmp;
            }
            last = (ll)(sqrt((1.0)*x) + 0.5);
            for(val = 1; val <= last; val++){
                    if(0 == x%val){
                            store.push_back(val);
                            if(val*val != x){
                                store.push_back(x/val);
                        }
                    }
            }
            if(idx > (ll)store.size()){
                    COUT << "-1" << endl;
            }else{
                sort(store.begin(), store.end());
                COUT << store[store.size() - idx] << endl;
            }
        }
    return 0;
}
时间: 2024-10-22 18:56:57

hdu 5019的相关文章

BestCoder10 1001 Revenge of GCD(hdu 5019) 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5019 题目意思:给出 X 和 Y,求出 第 K 个 X 和 Y 的最大公约数. 例如8 16,它们的公约数依次为1 2 4 8,那么第 3 个 GCD(X, Y) = 2,也就是从后往前数第3个公共因子. TLE思路:求出 X 的所有因子(从小到大开始存储),再从后往前枚举这些因子,检查是否也为 Y 的因子,统计到第 K 个数就是答案了......以为可以顺利通过,原来数据量还是非常大滴!!! 正确

HDU 5019 Revenge of GCD(数学)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5019 Problem Description In mathematics, the greatest common divisor (gcd), also known as the greatest common factor (gcf), highest common factor (hcf), or greatest common measure (gcm), of two or more i

HDU 5019 简单数学题

这道题是说给定A和B,求第C大的公约数. 我们最长求的就是最大公约数了,也就是通常用的GCD算法.但是现在要求第C大的公约数,我们可以想见如果令第C大的公约数为x,最大公约数为g的话,那么x|g的,为什么呢? 我们可以直观的理解,最大公约数其实就是A和B分别进行素因子分解之后,能取到公共素因子乘起来得到的.而对于任意A.B的公约数,那么肯定包含了部分的最大公约数所包含的素因子,因此x|g. 于是要求第C大的公约数,只需要枚举g的因子就行了,我们知道求一个数的因子情况,是可以进行O(sqrt(n)

HDU 5019 Revenge of GCD

Revenge of GCD Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 430    Accepted Submission(s): 122 Problem Description In mathematics, the greatest common divisor (gcd), also known as the greate

hdu 5019(第K大公约数)

Revenge of GCD Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2140    Accepted Submission(s): 596 Problem Description In mathematics, the greatest common divisor (gcd), also known as the greate

hdu 5019 Revenge of GCD(BestCoder Round #10)

Revenge of GCD                                                              Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 668    Accepted Submission(s): 195 Problem Description In mathematics

xudyh的gcd模板

hdu 5019 1 #include <cstdlib> 2 #include <cctype> 3 #include <cstring> 4 #include <cstdio> 5 #include <cmath> 6 #include <algorithm> 7 #include <vector> 8 #include <string> 9 #include <iostream> 10 #in

HDU ACM 5019 Revenge of GCD

分析:只需要求出最大公约数,然后枚举最大公约数的因子,把他们保存起来在求第K大的:因为是最大公约数的因子必然是两个数的因子.另外循环变量i和个数cnt都要声明为__int64,否则出错. #include<iostream> #include<algorithm> using namespace std; __int64 gcd(__int64 x,__int64 y) { __int64 r; while(y) { r=x%y; x=y; y=r; } return x; } _

杭电(hdu)5019 Revenge of GCD

Revenge of GCD Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1724    Accepted Submission(s): 472 Problem Description In mathematics, the greatest common divisor (gcd), also known as the great