cf round 505(div1+div2)based on VK cup 2018 final B. Weakened Common Divisor

题意是给了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的质因子,然后暴力去枚举每一组数据。
       把a和b的质因子都列举出来,然后到剩下的N-1组数据中判断,一旦发现有一个质因子能满足被n-1组数据的任意一个数整除,就输出。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    int n;
    scanf("%d",&n);
    ll a,b;
    scanf("%lld%lld",&a,&b);
    for(int i=2;i<=n;i++)
    {
        ll x,y;
        scanf("%lld%lld",&x,&y);
        a=__gcd(x*y,a);
        b=__gcd(x*y,b);
    }
    if(a>1)
    {
        for(int i=2;i*i<=a;i++)
        {
            if(a%i==0)
            {
                printf("%d\n",i);
                return 0;
            }
        }
        printf("%d\n",a);
    }
    else if(b>1)
    {
        for(int i=2;i*i<=b;i++)
        {
            if(b%i==0)
            {
                printf("%d\n",i);
                return 0;
            }
        }
        printf("%d\n",b);
    }
    else
    {
        printf("-1\n");
    }
}
#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;
}

猜你喜欢

转载自www.cnblogs.com/lishengkangshidatiancai/p/10260638.html