P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题(数学思维)

简介: P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题(数学思维)

题目描述



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

  1. P,Q 是正整数。
  2. 要求  P,Q 以  x0 为最大公约数,以 y0 为最小公倍数。


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


输入格式



一行两个正整数 x0,y0。


输出格式



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


输入输出样例



输入  

3 60


输出

4


说明/提示



P,Q 有 4  种:

  1. 3, 60
  2. 15, 12
  3. 12, 15
  4. 60, 3


【题目来源】

NOIP 2001 普及组第二题

题意分析,首先我们肯定知道最大公约数和最小公倍数的乘积等于2个数的的乘积。


然后我们遍历一遍找到他们2个数,用m*n代表,当他们的最大公约数为n时成立。

具体实现看代码。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int m,n,ans,flag;
ll gcd(ll x,ll y)//最大公约数 
{
    if(x%y==0)    {return y;}
    return gcd(y,x%y);
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=sqrt(1ll*m*n);i++)
    {
        if((1ll*n*m)%i==0&&gcd(i,(1ll*n*m)/i)==n)//就是找有最大公约数有几个可以产生 
        {
            ans++;
            if(1ll*i*i==1ll*n*m)  flag=1;
        }
    }
    cout<<ans*2-flag;//最后乘以二是因为只遍历了一半
    return 0;
}


相关文章
|
20天前
P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题
P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题
23 0
|
20天前
|
算法
第十四届蓝桥杯集训——for——判断质数/素数
第十四届蓝桥杯集训——for——判断质数/素数
35 0
|
11月前
【2012NOIP普及组】T1. 质因数分解 试题解析
【2012NOIP普及组】T1. 质因数分解 试题解析
|
11月前
|
算法
【蓝桥杯】求既约分数—>(全解)最大公约数与最小公倍数
【蓝桥杯】求既约分数—>(全解)最大公约数与最小公倍数
51 0
|
算法
【递归与递推】洛谷[NOIP2002 普及组] 过河卒
前言 本题来自洛谷P1002. 题目链接:[NOIP2002 普及组] 过河卒 - 洛谷
143 0
求最大公约数(更相减损术&辗转相除法)
求最大公约数(更相减损术&辗转相除法)
118 0
|
关系型数据库 MySQL 数据库
|
算法
算法竞赛刷题:[NOIP2001 普及组] 最大公约数和最小公倍数问题
算法竞赛刷题:[NOIP2001 普及组] 最大公约数和最小公倍数问题
150 0
|
算法 C++
算法竞赛题解:[NOIP2017 普及组] 成绩
算法竞赛题解:[NOIP2017 普及组] 成绩
302 0
|
算法
算法竞赛题解:[NOIP2015 普及组] 金币
算法竞赛题解:[NOIP2015 普及组] 金币
540 0

热门文章

最新文章