• 一道最大公约数的题: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);
        }
    }
  • 相关阅读:
    java-判断某一年是否是闰年
    java-不用其他变量实现两变量互换
    java基础一标识符,运算符
    robotium学习(三)
    robotium学习(二)
    robotium学习(一)
    AX2012 订单折扣的应用
    AX2012 用户收藏夹复制
    ueditor 改变图片上传路径
    if else 多路分支,多条件运算
  • 原文地址:https://www.cnblogs.com/kamimxr/p/11523249.html
Copyright © 2020-2023  润新知