zoukankan      html  css  js  c++  java
  • 51Nod 1179 最大的最大公约数

                           1179 最大的最大公约数
    给出N个正整数,找出N个数两两之间最大公约数的最大值。例如:N = 4,4个数为:9 15 25 16,两两之间最大公约数的最大值是15同25的最大公约数5。
     
    Input
    第1行:一个数N,表示输入正整数的数量。(2 <= N <= 50000)
    第2 - N + 1行:每行1个数,对应输入的正整数.(1 <= S[i] <= 1000000)
    Output
    输出两两之间最大公约数的最大值。
    Input示例
    4
    9
    15
    25
    16
    Output示例
    5

    n^2的做法显然不行
    看数据范围 S[i]<=1000000 所以我们可以枚举每一个数的所有因子 这是可以开下的
    然后找从大到小 找出现过两次以上的数 记为ans

     1 #include <cmath>
     2 #include <cstdio>
     3 #include <cctype>
     4 
     5 const int MAXN=1000010;
     6 
     7 int n;
     8 
     9 int cnt[MAXN];
    10 
    11 inline void read(int&x) {
    12     int f=1;register char c=getchar();
    13     for(x=0;!isdigit(c);c=='-'&&(f=-1),c=getchar());
    14     for(;isdigit(c);x=x*10+c-48,c=getchar());
    15     x=x*f;
    16 }
    17 
    18 int hh() {
    19     read(n);
    20     for(int x,i=1;i<=n;++i) {
    21         read(x);
    22         for(int j=1;j<=sqrt(x);++j) if(x%j==0) ++cnt[j],++cnt[x/j];
    23     }
    24     for(int i=1000000;i;--i) 
    25       if(cnt[i]>=2) {
    26           printf("%d
    ",i);
    27           break;
    28       }
    29     return 0;
    30 }
    31 
    32 int sb=hh();
    33 int main(int argc,char**argv) {;}
    代码
  • 相关阅读:
    JDK8新特性
    控制线程同步的方法
    Java面向对象(一)20170517
    Java语言基础-递归
    勒索病毒应对措施
    JAVA application 初步20170515
    JAVA语言基础(二)20170511
    JAVA语言基础(二)20170510
    JAVA学习概述(一)20170508
    我有一个读绘本的妈妈
  • 原文地址:https://www.cnblogs.com/whistle13326/p/7652853.html
Copyright © 2011-2022 走看看