zoukankan      html  css  js  c++  java
  • 一道最大公约数的题:easy number

    现有n个Zack,每个Zack有一个一个能力值,从这n个Zack中选出k个,使他们的最大公约数的值最大

    【输入格式】

    第一行有一个整数n,代表有n个Zack

    第二行n个整数ai,代表每个Zack的能力值

    【输出格式】

    一共n行,第n行为k=i情况下的能力值的最大公因数

     

    【样例输入】

    4

    1 2 3 4

     

    【样例输出】

     

    4

     

    2

     

    1

    1

     

     

    所有有关约数的题我们可以通过它们的共同因子来进行运算;

    这道题我们可以统计对于每个因子x,有多少个数拥有因子x;

    这样我们循环模拟来对答案回答;

    #include <bits/stdc++.h>
    #pragma GCC optimize(2)
    using namespace std;
    int c[1000010];
    inline void fenjie(register int x)
    {
        for(int i=1;i<=sqrt(x);i++){
            if(x%i==0){
                c[i]++;
                if(i!=x/i) c[x/i]++;
            }
        }
    }
    int read()
    {
        char c=getchar();int tmp=0;
        while(c<'0'||c>'9') c=getchar();
        while(c>='0'&&c<='9') tmp=tmp*10+c-'0',c=getchar();
        return tmp;
    }
    int main()
    {
        register int n;
        n=read();
        for(register int i=1;i<=n;i++){
            register int x;
            x=read();
            fenjie(x);
        }
        register int j=1000000;
        register int i=1;
        for(i=1;i<=n;i++){
            while(c[j]<i){
                --j;            
            }
               printf("%d
    ",j);
        }
    }
  • 相关阅读:
    浅读《构建之法》
    def 和 lamdba的区别
    Numpy和Pandas的区别
    Django:每点击一次就增加行可输入的表格
    F函数和Q函数的作用
    super()的用法
    liunx操作系统
    celery(超详细)
    celery
    FastDFS环境搭建
  • 原文地址:https://www.cnblogs.com/kamimxr/p/11523249.html
Copyright © 2011-2022 走看看