• P1029 最大公约数和最小公倍数问题(数论水题)


    题目描述

    输入两个正整数 x0,y0x_0, y_0x0,y0,求出满足下列条件的 P,QP, QP,Q 的个数:

    1. P,QP,QP,Q 是正整数。

    2. 要求 P,QP, QP,Q 以 x0x_0x0 为最大公约数,以 y0y_0y0 为最小公倍数。

    试求:满足条件的所有可能的 P,QP, QP,Q 的个数。

    输入格式

    一行两个正整数 x0,y0x_0, y_0x0,y0

    输出格式

    一行一个数,表示求出满足条件的 P,QP, QP,Q 的个数。

    输入输出样例

    输入 #1
    3 60
    
    输出 #1
    4
    众所周知,a*b=gcd(a,b)*lcm(a,b),现在能确定a和b的范围以及a*b的值,直接枚举a,看看每个a能否找到一个对应的b。平方要处理一下。
    如果没有的话记得要输出0。
    #include <bits/stdc++.h>
    using namespace std;
    long long x,y;
    long long gcd(long long a,long long b)
    {
        return b? gcd(b,a%b):a;
    }
    bool vis[100005]={0};
    long long lcm(int a,int b)
    {
        return a*b/gcd(a,b);
    }
    int main()
    {
        cin>>x>>y;
        long long i,j;
        long long z=x*y;
        long long ans=0;
        for(i=x;i<=y;i++)//i是a 
        {
            if(z%i==0)
            {
                if(gcd(i,z/i)==x&&lcm(i,z/i)==y)
                {
                    if(i==z/i)
                    {
                        cout<<ans*2+1;
                        return 0;
                    }
                    if(vis[i])
                    {
                        cout<<ans*2;
                        return 0;
                    }
                    else
                    {
                        ans++;
                        vis[i]=vis[z/i]=1;
                    }
                }
            }
        }
        if(ans==0)cout<<0;
        return 0;
    }
  • 相关阅读:
    六、mysql字段类型选择
    五、mysql存储引擎
    四、mysql内置函数
    三、mysql运算符
    二、mysql数据类型
    一、mysql使用入门
    拉链法解决Hash节点冲突问题
    CSS3样式
    CSS样式表
    HTML的表格、表单和框架
  • 原文地址:https://www.cnblogs.com/lipoicyclic/p/12421933.html
Copyright © 2020-2023  润新知