Codeforces 1025B Weakened Common Divisor(思维)

Posted ehanla

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces 1025B Weakened Common Divisor(思维)相关的知识,希望对你有一定的参考价值。

题目链接:CF 1025B

题意:给定n个二元组(ai,bi),定义WCD为能整除n个二元组每组中至少一个的数,求WCD。

题解:我们先求出能整除n个二元组ai*bi的GCD(代表了ai和bi两者),如果得到的GCD!=1,我们再对这n个二元组去提取,GCD与ai和bi进行gcd,可以认为是一个缩化,如果为1代表我们实际去求答案的时候不选择该数;否则说明无法找到这样的值,输出-1。

 1 #include <cstdio>
 2 using namespace std;
 3 
 4 typedef long long LL;
 5 LL gcd(LL a,LL b){
 6     return b==0?a:gcd(b,a%b);
 7 }
 8 
 9 const int N=2e5+10;
10 LL a[N],b[N];
11 
12 int main(){
13     int n;
14     scanf("%d",&n);
15     LL c=0;
16     for(int i=1;i<=n;i++){
17         scanf("%lld%lld",&a[i],&b[i]);
18         c=gcd(c,a[i]*b[i]);
19     }
20     if(c==1) printf("-1
");
21     else{
22         for(int i=1;i<=n;i++){
23             LL tmp=gcd(c,a[i]);
24             if(tmp>1) c=tmp;
25             tmp=gcd(c,b[i]);
26             if(tmp>1) c=tmp;
27         }
28         printf("%lld
",c);
29     }
30     return 0;
31 }

 

以上是关于Codeforces 1025B Weakened Common Divisor(思维)的主要内容,如果未能解决你的问题,请参考以下文章

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

CF1025B Weakened Common Divisor

CF1025B Weakened Common Divisor

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

codeforces上怎么看测试数据

如何看codeforces做了多少题