zoukankan      html  css  js  c++  java
  • 8619 公约公倍

    Description

    给定六个正整数a,b,c,d,e,f;问你是否存在整数既是a,b,c的最大公约的倍数,同时又是d,e,f的最小公倍数的约数。 


    输入格式

    输入为多case输入,每个case只有一行,每行六个正整数。当输入6个0时结束。



    输出格式

    存在输出YES,否则输出:NO



     

    输入样例

    32 40 16 20 30 24
    0 0 0 0 0 0
    
    



     

    输出样例

    YES 

     

    提示

    32,40,16的最大公约数是:8;而20,30,24的最小公倍数为120,显然存在整数(如24),既是8的倍数,又是120的约数 

    #include<cstdio>
    int gcd(int a,int b)
    {
        return b==0?a:gcd(b,a%b);
    }
    int main()
    {
        int a, b, c, d, e, f, i, j,k, k1, k2;
        int t=0;
        while (1)
        {
            k1 = k2 = 0;
            scanf("%d%d%d%d%d%d", &a, &b, &c, &d, &e, &f);
            if (!a&&!b&&!c&&!d&&!e&&!f)
                break;
            b=gcd(a,b);
            k1=gcd(b,c);
            if(d>=e&&d>=f)  k=d;
            if(e>=d&&e>=f)  k=e;
            else k=f;
            j=1;
            while(1)
            {
                t=j*k;
                if(t%d==0&&t%e==0&&t%f==0) break;
                else j++;
            }
            /*此处在求三个数的最小公倍数时,先找到三个数中最大的数k,
            随着t=j*k,当t%d==0&&t%e==0&&t%f==0时,t就是满足条件的LCM*/
            for (i = k1, j = 1; i <= t / 2; j++, i = j * k1)
                if (t % i == 0)
                    break;
            if (i > t / 2)
                printf("NO
    ");
            else
                printf("YES
    ");
        }
        return 0;
    }
    View Code
  • 相关阅读:
    Bzoj4873 [SXOI2017]寿司餐厅
    Bzoj4870 [SXOI2017]组合数问题
    Bzoj4820 [Sdoi2017]硬币游戏
    Bzoj4816 [Sdoi2017]数字表格
    HDU2089 不要62
    Python——lambda函数
    Django——在线教育项目总结
    Django项目——CRM
    数据库——MongoDB的安装
    母猪的产后护理——一些零碎的知识
  • 原文地址:https://www.cnblogs.com/orchidzjl/p/4263423.html
Copyright © 2011-2022 走看看