题目链接:http://codeforces.com/contest/1025/problem/B

       题意是给了n组数,从每组数里挑一个数出来,求他们的因子,如果没有因子(也就是因子为1)的话就输出-1,如果有多个因子,输出一个就行。

       一共有两种解法,一是我们先输入第一组的a和b,然后输入2-n组的x和y,分别更新a = gcd(a, x * y), b = gcd(b, x * y);当a和b都等于1的时候说明没有符合题意的因子,输出-1,否则输出a或b中不等于1的数的一个因子即可。第二种方法是我们分别求出a和b的质因子,然后暴力去枚举每一组数据。第二种方法要比第一种实现跑的快一点。看代码可能会更好理解一点。


AC代码(第一种):

#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n;
ll a,b;ll Output(ll x){for(int i=2;i*i<=x;i++){if(x % i == 0)return i;}return x;
}int main()
{cin>>n;cin>>a>>b;for(int i=1;i<n;i++){ll x,y;cin>>x>>y;a = __gcd(a, x * y);b = __gcd(b, x * y);}if(a != 1){cout<<Output(a)<<endl;}else if(b != 1){cout<<Output(b)<<endl;}else{puts("-1");}return 0;
}

AC代码(第二种):

#include <bits/stdc++.h>
#define maxn 150005
using namespace std;
int a[maxn],b[maxn];
int pre[maxn];int n;int main()
{scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d%d",&a[i],&b[i]);}int num = 0;for(int i = 2; i * i <= a[0]; i++){if(a[0] % i == 0){pre[num++] =  i;while(a[0] % i == 0)a[0] /= i;}}if(a[0] > 1) pre[num++] = a[0];for(int i = 2; i * i <= b[0]; i++){if(b[0] % i == 0){pre[num++] =  i;while(b[0] % i == 0)b[0] /= i;}}if(b[0] > 1)pre[num++] = b[0];for(int i = 0; i < num; i++){int flag = 0;for(int j = 1; j < n; j++){if(a[j] % pre[i] != 0 && b[j] % pre[i] != 0){flag = 1;break;}}if(flag == 0){cout<<pre[i]<<endl;return 0;}}puts("-1");return 0;
}

Codeforces Round #505 B. Weakened Common Divisor(思维)相关推荐

  1. Codeforces Round #505 B Weakened Common Divisor (cf 1025B)

    题目:Weakened Common Divisor 题意: 比赛时我的思路是求出每一对ai和bi的lcm,计作ci,再求出gcd(ci),最后求出这个gcd的一个质因数即可.问题是质因数的分解问题, ...

  2. CF #505 B Weakened Common Divisor

    CF #505 B Weakened Common Divisor 题意:问是否存在一个数,每组数据中都有数据可以整除它,并且这个数要大于1,如果存在多组数据随便输出一个,如果不存在,则输出-1. 这 ...

  3. Codeforces Round #505 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)

    A. Doggo Recoloring ps:注意 n == 1 B. Weakened Common Divisor 题解:WCD出现中的数必然是 < a, b >中某个数的公约数.而 ...

  4. 【CF1025B】 Weakened Common Divisor

    题目 题目描述 与 GCDGCD (最大公约数)类似,我们引进 WCDWCD (弱公约数)的概念, WCDWCD 的定义如下: 给出几对数 \left( a_1,b_1 \right) ,\left( ...

  5. cf----2019-10-03(Minimum Value Rectangle,Plasticine zebra,Weakened Common Divisor)

    城市黎明的灯火,总有光环在陨落,模仿者一个又一个,无人问津的角色,你选择去崇拜谁呢,怨恨谁呢? You have nn sticks of the given lengths. Your task i ...

  6. CF1025B Weakened Common Divisor

    题目描述: During the research on properties of the greatest common divisor (GCD) of a set of numbers, Il ...

  7. Codeforces Round #658 (Div. 2) D. Unmerge 思维 + 背包

    传送门 文章目录 题意: 思路: 题意: 思路: 我们可以假设有两个桶,让后向里面放数,可以发现,如果向其中放入了aia_iai​,那么紧跟在他后面的所有<ai<a_i<ai​的数都 ...

  8. Codeforces Round #619 (Div. 2) E. Nanosoft 思维 + 二维前缀和

    传送门 文章目录 题意: 思路: 题意: 思路: 考虑到最大面积是由四种颜色构成的,且四种颜色可以从中心扩展出去,所以我们分别维护四种颜色的二维前缀和,O(1)O(1)O(1)计算矩阵内颜色的个数.现 ...

  9. Codeforces Round #743 (Div. 2) B. Swaps 思维

    题目地址Codeforces Round #743 (Div. 2) B. Swaps 题意很好懂,这里就不复述了. 思路:因为是要让a小于b,所以可以用双指针,在b数组中找到第一个大于a数组中第i个 ...

最新文章

  1. C++11中头文件chrono的使用
  2. 程序员崩溃的40多个瞬间!!!太形象了,你遇到过几个?
  3. python-子类和派生、继承
  4. 成长轨迹59 【ACM算法之路 百炼poj.grids.cn】【递归】【2694:逆波兰表达式】
  5. 回归分析和卡方检验的区别_11个常见的多变量分析方法
  6. 安装sqlserver时“试图执行未经授权的操作“的错误
  7. 通信调制体制设计之64QAM性能分析MATLAB仿真及代码
  8. 重磅!英特尔终于挤出10nm芯片 六大技术战略,震动芯片届
  9. 【论文笔记】LINE:大规模信息网络嵌入
  10. 熊猫分发_熊猫重命名列和索引
  11. Spring Cloud Alibaba Nacos集群和持久化配置
  12. meteor---在合并打包多个文件ZIP下载的功能
  13. [CTBS]许可证过期之激活
  14. 小学生刚学计算机时先学什么,浅谈小学生应如何学习电脑
  15. NPOI导出EXCEL 合并单元格、统计列、单元格样式设置
  16. 关于uIP移植以及部分特性解析和勘误
  17. python图片显示文本框_Python3 tkinter基础 Text image 文本框中插入图片
  18. OPPO、华为、烽火、海能达、腾讯、阿里、德昌面试经验
  19. 职场寒冬来袭,“零工经济”让你比90%的人更有安全感
  20. 在制作蓝牙小车app中遇到的坑

热门文章

  1. ST算法 - RMQ(区间最值问题)—— 倍增
  2. Windows10如何滑动关机(与以前不一样的方式)
  3. 表情包在线生成PHP源码
  4. markdown 模板2
  5. Windows实验四总结(记事本)
  6. 为什么常说程序员35岁是道坎?
  7. Linux下shell编程实例
  8. 6.3 图解BERT模型:从零开始构建BERT
  9. 米思齐学习例程(八):声控灯
  10. 基于java的毕业论文在线选题指导系统