zoukankan      html  css  js  c++  java
  • CodeForces

    http://codeforces.com/problemset/problem/1025/B

    大意:n对数对(ai,bi),求任意一个数满足是所有数对中至少一个数的因子(大于1)

    分析:

    1. 首先求所有数对的lcm,把所有数对的两个数的素因子并集求出来
    2. 求所有lcm的gcd,这样做求出数对之间的公共素因子
    3. 注意,公共素因子可能在某一组数对中状态为某一部分是ai的素因子而剩下的一部分是bi的素因子,因此可能会导致最后答案既不是ai的因子又不是bi的因子,因此求出来的最后答案得再和每个数对中的a或b求一下最大公约数
    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int MAXN=150000+100;
    ll a[MAXN],b[MAXN];
    
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=0;i<n;i++)
            scanf("%lld %lld",&a[i],&b[i]);
        ll gcd=a[0]*b[0]/__gcd(a[0],b[0]);
        for(int i=1;i<n;i++)
            gcd=__gcd(gcd,a[i]*b[i]/__gcd(a[i],b[i]));
        if(gcd==1)
        {
            printf("-1
    ");
            return 0;
        }
        ll temp;
        for(int i=0;i<n;i++)
        {
            temp=__gcd(gcd,a[i]);
            if(temp>1){
                gcd=temp;
                continue;
            }
            temp=__gcd(gcd,b[i]);
            if(temp>1)
                gcd=temp;
        }
        printf("%lld
    ",gcd);
        return 0;
    }
  • 相关阅读:
    详解Codis安装与部署
    停车场地图开发
    dlib换脸
    海康相机官网硬触发设置
    python操作数据库
    心率和血氧测量
    音乐模块
    flask网页显示图片
    树莓派识别二维码
    树莓派python获取自身IP
  • 原文地址:https://www.cnblogs.com/spzeno/p/10467084.html
Copyright © 2011-2022 走看看