zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    10 vue中 v-model ,计算机demo
    linear-gradient
    flexible.js
    九宫格抽奖原理
    js匿名函数与闭包作用
    HTML5实现九宫格布局
    scrollLeft/scrollTop/scrollHeight
    通过media媒体查询设置ie7/8样式、使用media判断各机型、手淘flexible.js
    右击事件oncontentmenu
    js/jquery判断一个对象是否为空
  • 原文地址:https://www.cnblogs.com/lipoicyclic/p/12421933.html
Copyright © 2011-2022 走看看