题意:
      给你两个数,让你求他们的第k大公约数。

思路:

      这个比较好想,我的做法是先求出最大公约数,他们的公共因子一定是最大公约数的因子,所以直接log(gcd(A,B))的时间复杂度就枚举出来了,这个题目的最小(也许别人会更快)的时间复杂度应该是log(gcd(A ,B)) ,就是枚举的时候所用的时间,我为了偷懒,枚举的时候没有开记录的东西,直接存数组里面了,最后还排序了,所以慢,如果说最大公约数的因子个数为n,那么我的时间复杂度应该是 n * log(n) 也就是log(gcd(A ,B)) * 2 * log(log(gcd(A ,B)) * 2) 因为n = log(gcd(A ,B)) * 2 ,看着这个时间复杂度感觉有点乱,不过不要在意这些细节,这个时间复杂度AC还是没有压力的。


#include<stdio.h>
#include<math.h>
#include<algorithm>

using namespace std;__int64 num[1100000];__int64 GCD(__int64 A ,__int64 B)
{return A % B == 0 ? B : GCD(B ,A % B);
}int main ()
{__int64 A ,B ,K ,I ,T;scanf("%I64d" ,&T);while(T--){scanf("%I64d %I64d %I64d" ,&A ,&B ,&K);__int64 tmp = GCD(A ,B);int nowid = 0;for(I = (__int64)(sqrt(tmp*1.0)) ;I >= 1 ;I --){if(tmp % I == 0) {num[++nowid] = I ;if(I * I != tmp)num[++nowid] = tmp / I;}}sort(num + 1 ,num + nowid + 1);if(nowid < K) printf("-1\n");else printf("%I64d\n" ,num[nowid - K + 1]);} return 0;
}

hdu 5019 第k大公约数相关推荐

  1. XTUOJ ABK(求出A和B的第K大公约数)

    Accepted : 21   Submit : 171 Time Limit : 1000 MS   Memory Limit : 65536 KB  题目描述 ABK是一个比A+B还要简单的题目, ...

  2. C/C++训练1---最大公约数与最小公倍数(java)

    C/C++训练1---最大公约数与最小公倍数 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Descript ...

  3. SDUT-1131 C/C++训练1---最大公约数与最小公倍数(JAVA*)

    C/C++训练1---最大公约数与最小公倍数 Time Limit: 1000 ms  Memory Limit: 65536 KiB Submit  Statistic Problem Descri ...

  4. ACM数论之旅3---最大公约数gcd和最小公倍数lcm(苦海无边,回头是岸( ̄∀ ̄))...

    gcd(a, b),就是求a和b的最大公约数 lcm(a, b),就是求a和b的最小公倍数 然后有个公式 a*b = gcd * lcm     ( gcd就是gcd(a, b), ( •̀∀•́ ) ...

  5. C语言经典例16-最大公约数和最小公倍数

    目录 1 题目 2 分析 2.1 辗转相除法 2.2 相减法 3 实现 3.1 实现1(辗转相除法) 3.2 实现2(相减法) 1 题目 输入两个正整数m和n,求其最大公约数和最小公倍数. 2 分析 ...

  6. C/C++训练1---最大公约数与最小公倍数_JAVA

    Description 输入两个正整数,求它们的最大公约数与最小公倍数. Input 输入两个正整数,两个整数之间用空格分开. 数据保证在 int 范围内. Output 第一行输出最大公约数: 第二 ...

  7. BUAA 更大公约数

    题目链接 给一个n*m的矩阵, 删除里面的一行一列, 使得剩下的数的最大公约数最大. 一个格子(x,y), 先预处理出(1,1)到这个格子的内所有数的最大公约数, 同理处理出(1, m), (n, m ...

  8. V-最大公约数 递归

    输入2个正整数A,B,求A与B的最大公约数. Input 2个数A,B,中间用空格隔开.(1<= A,B <= 10^9) Output 输出A与B的最大公约数. Sample Input ...

  9. 【C++笔记】 判断两个数互质(做大公约数为1)

    定理:gcd(a,b) = gcd(b,a mod b)  // a和b的最大公因数,a和b的大小没影响. ①0和任意自然数的最大公约数就是那个自然数. ②互质指最大公约数等于1的两个自然数. ③1和 ...

最新文章

  1. windows链接Linux的pgsql,postgreSQL在CMD里怎么连接
  2. 词嵌入应用_神经词嵌入的法律应用
  3. jquery --- 全选、全不选、反选、提交
  4. html 边框轮廓,CSS半圈(边框,仅轮廓)
  5. Strategy 策略模式
  6. mysql临时表怎么显示_如何查看MySQL临时表的说明?
  7. 又被分治题卡住好几个小时!用最笨的方法搞懂分治法边界,告别死循环!
  8. Linux命令整理-Kali
  9. 最简单的基于FFmpeg的视频编码器-更新版(YUV编码为MP4)
  10. Mathcad绘制三维散点图
  11. 总结全网最全的数据学习平台
  12. GitHup使用指南——安装及上传
  13. 51驱动AD9833
  14. 简单爬取网易云音乐评论(新手报到)
  15. android仿微信发布动态功能,android实现微信朋友圈发布动态功能
  16. 互联网运营必须掌握的专业术语
  17. 爬动漫网站数据_通过这三种动漫爱上数据科学和技术
  18. python列表生成式
  19. VMware 虚拟器安装kali镜像
  20. http协议之长连接与短连接服务器,长连接短连接

热门文章

  1. asm管理的dg数据文件缺失的处理方法
  2. 在Filter 无法跳转地址
  3. 【Unity技巧】制作一个简单的NPC
  4. N!的尾部连续0的个数
  5. 翻译:Single Sign-On for Everyone
  6. (网页)SQLserver中在上线的项目中遇到科学计数法怎么办?
  7. 调整代码生成工具Database2Sharp的Winform界面生成,使其易于列表工具栏的使用。...
  8. shell 解析 json
  9. OS开发UI篇—popoverController使用注意
  10. worktools-源码下拉问题