• N-GCD


    题目链接:https://www.nowcoder.com/practice/97142035f7d2443c91a3ffc343ad691d?tpId=122&&tqId=33724&rp=1&ru=/ta/exam-wangyi&qru=/ta/exam-wangyi/question-ranking

    题目描述

    小明很喜欢数对,又很喜欢GCD(最大公约数)。所以他想尽办法创造了一种全新的最大公约数:
    给出若干个数对(ai,bi),如果一个最大的质数x可以整除每一个数对中的至少一个数字并且这个数字大于1,那么x就称为这些数对的N-GCD。
    现在小明给了你一些数对,希望你可以算出它们的N-GCD。
     

    输入描述:

     

    第一行一个数字n,表示数对的个数。

    接下来n行,每行两个数字,用一个空格分隔,表示一个数对。

    满足1<=n <=150000,1<=ai,bi<=2 * 10^9。

     

    输出描述:

    一个数字,这些数对的N-GCD;若N-GCD不存在,那么输出-1。
    示例1

    输入


    3
    2 2
    3 6
    7 8

    输出


    2
    示例2

    输入


    2
    18 12
    3 24

    AC代码:
    #include<bits/stdc++.h>
    using namespace std;
    bool P(int n)
    {
        for(int i=2;i<=sqrt(n);i++)
        {
            if(n%i==0) return false;
        }
        return true;
    }
    int main()
    {
        int n;
        cin>>n;
        int a[n],b[n],m=INT_MAX,i;
        for(i=0;i<n;i++)
        {
            cin>>a[i]>>b[i];
            m=min(m,a[i]);
            m=min(m,b[i]);    
        }
        while(m>1)
        {
            if((!P(m))||((m&1==0)&&m>2))
            {
                m--;
                continue;
            }
            bool flag=true;
            for(i=0;i<n;i++)
            {
                if(!((a[i]%m==0)||(b[i]%m==0)))
                {
                    flag=false;
                    break;
                }
            }
            if(flag)break;
            else m--;
        }
        cout<<((m==1)?-1:m)<<endl; 
    }
    思路来源:
    
    
    
     
  • 相关阅读:
    Android CTS(frome google)
    Android CTS
    【Linux】- 修改系统时间与时区
    【Linux】- CentOS查看IP
    【Linux】- Ubutnu UFW防火墙的简单设置
    【Linux】- Ubuntu安装nginx
    【Linux】- apt-get命令
    【Linux】- Ubuntu搭建FTP服务器
    【Linux】- Ubuntu 配置mysql远程访问
    【Linux】- Ubuntu安装redis,并开启远程访问
  • 原文地址:https://www.cnblogs.com/dragondragon/p/13416070.html
Copyright © 2020-2023  润新知