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