zoukankan      html  css  js  c++  java
  • 洛谷 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) {    return !b ? a:gcd(b,a%b); }
    int main()
    {
        int a,b;
        scanf("%d%d",&a,&b);
        int g=gcd(a,b);
        if(g==1) { printf("-1"); return 0; }
        int t=min(a,b),p=0;
        for(int i=2;i*i<=t;i++)
            if(a%i==0 && b%i==0) { p=i; break; }
        if(!p) p=t;
        a/=p; b/=p;
        printf("%d",gcd(a,b));
    }
  • 相关阅读:
    Generator函数介绍
    C语言基础三
    C语言基础二
    C语言基础一
    node——路由控制
    Node.js_HTTP模块
    node_Express安装及检验
    conda Pyhon版本切换
    JAVA泛型里面各值代表的意义
    jq实现表格多行列复制
  • 原文地址:https://www.cnblogs.com/TheRoadToTheGold/p/7341589.html
Copyright © 2011-2022 走看看