zoukankan      html  css  js  c++  java
  • BestCoder10 1002 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 个数就是答案了......以为可以顺利通过,原来数据量还是非常大滴!!!

        正确思路:先求出 X 和 Y 的最大公约数 r,然后再求出 r 的 所有因子,从后往前数第 K 个就是答案了。这样做的依据是, r 的所有因子一定为 X 和 Y 的公共因子,也就符合题目要求啦~~~ 

        

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstdlib>
     4 #include <cstring>
     5 #include <algorithm>
     6 using namespace std;
     7 
     8 typedef __int64 ll;
     9 const ll maxn = 1e6 + 5;
    10 ll X, Y, K, ansi;
    11 ll com_factor[maxn];
    12 
    13 ll gcd(ll x, ll y)
    14 {
    15     while (y)
    16     {
    17         ll r = x % y;
    18         x = y;
    19         y = r;
    20     }
    21     return x;
    22 }
    23 
    24 int main()
    25 {
    26     int T, cnt;
    27     while (scanf("%d", &T) != EOF)
    28     {
    29         while (T--)
    30         {
    31             scanf("%I64d%I64d%I64d", &X, &Y, &K);
    32             if (X < Y)
    33                 swap(X, Y);
    34             ll r = gcd(X, Y);
    35             cnt = 0;
    36             for (ll i = 1; i*i <= r; i++)
    37             {
    38                 if (r % i == 0)
    39                 {
    40                     com_factor[++cnt] = i;
    41                     if (r/i != i)
    42                         com_factor[++cnt] = r/i;
    43                 }
    44             }
    45             sort(com_factor+1, com_factor+cnt+1);
    46             reverse(com_factor+1, com_factor+cnt+1);
    47             printf("%I64d
    ", cnt < K ? -1 : com_factor[K]);
    48         }
    49     }
    50     return 0;
    51 }
    View Code
  • 相关阅读:
    046.Kubernetes集群管理-日常运维
    045.Kubernetes集群存储-CSI存储机制
    044.Kubernetes集群存储-StorageClass
    043.Kubernetes集群存储-共享存储
    CKAD考试心得分享
    050.Kubernetes集群管理-Prometheus+Grafana监控方案
    附015.Kubernetes其他技巧
    041.Kubernetes集群网络-K8S网络策略
    042.Kubernetes集群网络-flannel及calico
    040.Kubernetes集群网络-CNI网络模型
  • 原文地址:https://www.cnblogs.com/windysai/p/3987222.html
Copyright © 2011-2022 走看看