zoukankan      html  css  js  c++  java
  • luogu U10783 名字被和谐了

    链接

    https://www.luogu.org/problem/show?pid=U10783

    题目背景

    众所周知,我们称g是a的约数,当且仅当g是正数且a mod g = 0。

    众所周知,若g既是a的约数也是b的约数,我们称g是a、b的一个公约数。

    众所周知,a、b最大的那个公约数就叫最大公约数。

    题目描述

    现在对于给定的两个正整数a、b,你需要求出它们次大的公约数(second greatest common divisor)。

    输入输出格式

    输入格式:

    第一行两个正整数数a、b。

    输出格式:

    第一行一个数,表示a、b的次大公约数。若a、b的公约数只有一个,则输出-1。

    输入输出样例

    输入样例#1:
    2 3
    输出样例#1:
    -1

    说明

    测试点1..4:a、b≤10^5

    测试点1..10:1≤a、b≤10^9

    用最大公约数除以最小的公共质因子

    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int gcd(int a,int b)
    {
        if(b==0)return a;
        else return gcd(b,a%b);
    }
    int main()
    {
        int a,b;
        scanf("%d%d",&a,&b);
        int gc_d=gcd(a,b);
        if(gc_d==1)
        {
            puts("-1");return 0;
        }
        int t=min(a,b),tt=a+b-t;
        int minn=1;
        for(int i=2;i*i<=t;i++)
            if(t%i==0&&tt%i==0)
            {
                minn=i;break;
            }
        if(minn==1)
        {
            puts("1");return 0;
        }
        printf("%d
    ",gc_d/minn);
        return 0;
    }
  • 相关阅读:
    CPU运行原理
    ucore代码分析
    ThreadLocal是否会导致内存泄露
    2018 多校联合训练 4
    2018 多校联合训练 3
    2018 牛客多校 4
    2018 牛客多校 3
    2018 牛客多校 2
    2018 牛客多校 1
    2018 多校联合训练 2
  • 原文地址:https://www.cnblogs.com/sssy/p/7341662.html
Copyright © 2011-2022 走看看