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=+;
ll a[MAXN],b[MAXN]; int main()
{
int n;
scanf("%d",&n);
for(int i=;i<n;i++)
scanf("%lld %lld",&a[i],&b[i]);
ll gcd=a[]*b[]/__gcd(a[],b[]);
for(int i=;i<n;i++)
gcd=__gcd(gcd,a[i]*b[i]/__gcd(a[i],b[i]));
if(gcd==)
{
printf("-1\n");
return ;
}
ll temp;
for(int i=;i<n;i++)
{
temp=__gcd(gcd,a[i]);
if(temp>){
gcd=temp;
continue;
}
temp=__gcd(gcd,b[i]);
if(temp>)
gcd=temp;
}
printf("%lld\n",gcd);
return ;
}

CodeForces - 1025B Weakened Common Divisor的更多相关文章

  1. codeforces 1025B Weakened Common Divisor(质因数分解)

    题意: 给你n对数,求一个数,可以让他整除每一对数的其中一个 思路: 枚举第一对数的质因数,然后暴力 代码: #include<iostream> #include<cstdio&g ...

  2. codeforces#505--B Weakened Common Divisor

    B. Weakened Common Divisor time limit per test 1.5 seconds memory limit per test 256 megabytes input ...

  3. CF1025B Weakened Common Divisor 数学

    Weakened Common Divisor time limit per test 1.5 seconds memory limit per test 256 megabytes input st ...

  4. Codeforces #505(div1+div2) B Weakened Common Divisor

    题意:给你若干个数对,每个数对中可以选择一个个元素,问是否存在一种选择,使得这些数的GCD大于1? 思路:可以把每个数对的元素乘起来,然后求gcd,这样可以直接把所有元素中可能的GCD求出来,从小到大 ...

  5. 【Codeforces Round #505 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final) B】Weakened Common Divisor

    [链接] 我是链接,点我呀:) [题意] 给你n个数对(ai,bi). 让你求一个大于1的数字x 使得对于任意的i x|a[i] 或者 x|b[i] [题解] 求出第一个数对的两个数他们有哪些质因子. ...

  6. CF #505 B Weakened Common Divisor(数论)题解

    题意:给你n组,每组两个数字,要你给出一个数,要求这个是每一组其中一个数的因数(非1),给出任意满足的一个数,不存在则输出-1. 思路1:刚开始乱七八糟暴力了一下果断超时,然后想到了把每组两个数相乘, ...

  7. CF1025B Weakened Common Divisor【数论/GCD/思维】

    #include<cstdio> #include<string> #include<cstdlib> #include<cmath> #include ...

  8. CF1025B Weakened Common Divisor

    思路: 首先选取任意一对数(a, b),分别将a,b进行因子分解得到两个因子集合然后取并集(无需计算所有可能的因子,只需得到不同的质因子即可),之后再暴力一一枚举该集合中的元素是否满足条件. 时间复杂 ...

  9. CF1025B Weakened Common Divisor 题解

    Content 定义 \(n\) 个数对 \((a_1,b_1),(a_2,b_2),(a_3,b_3),...,(a_n,b_n)\) 的 \(\text{WCD}\) 为能够整除每个数对中至少一个 ...

随机推荐

  1. Chrome 强制刷新缓存的方法

    https://jingyan.baidu.com/article/11c17a2c2a9e27f446e39d98.html

  2. raw格式转换成qcow2格式

    qemu-img convert -f raw redhat6.7-kvm-postgresql9.2.3-8disk-pulsar2.2 -O qcow2 redhat6.7-kvm-postgre ...

  3. C++ 数据封装和抽象

    C++ 数据抽象 数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节. 数据抽象是一种依赖于接口和实现分离的编程(设计)技术. 让我们举一个现实生活中的真实例子 ...

  4. B-spline Curves 学习前言与动机(1)

    B-spline Curves 学习之前言 本博客转自前人的博客的翻译版本,前几章节是原来博主的翻译内容,但是后续章节博主不在提供翻译,后续章节我在完成相关的翻译学习. (原来博客网址:http:// ...

  5. leancloud 云引擎

    可以部署网站的云端,云代码的升级版.

  6. 在TFS 2013的迭代视图中修改工作项数目限制

    当TFS迭代中的工作项数目超过500时,在TFS的网页(Web Access)显示中就会出现红色警告提示"积压工作(backlog)中的项数超出配置的限制500.当前总数为529-.&quo ...

  7. 调用kylin的restAPI接口构建cube

    调用kylin的restAPI接口构建cube 参考:http://kylin.apache.org/docs/howto/howto_build_cube_with_restapi.html 1. ...

  8. UDP实现一个简易的聊天室 (Unity&&C#完成)

    效果展示(尚未完善) UDP User Data Protocol 用户数据报协议 概述 UDP是不连接的数据报模式.即传输数据之前源端和终端不建立连接.使用尽最大努力交付原则,即不保证可靠交付. 数 ...

  9. Visual Studio效率神器——超级扩展ReSharper安装和破解

    Visual Studio效率神器--超级扩展ReSharper安装和破解   ReSharper的使用方法网络上有文章Resharper安装和破解极其简单,2分钟就搞定了.安装ReSharper官方 ...

  10. Python脱产8期 Day15 2019/4/30

    一 生成器send方法 1.send的工作原理# 1.send发生信息给当前停止的yield# 2.再去调用__next__()方法,生成器接着往下指向,返回下一个yield值并停止 2.例: per ...