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;
}


相关文章
|
5月前
每日练习之数学——砝码和天平
每日练习之数学——砝码和天平
24 3
|
5月前
|
机器学习/深度学习 人工智能
【洛谷 P1028】[NOIP2001 普及组] 数的计算 题解(递推)
在NOIP2001普及组的数的计算题目中,给定自然数`n`,需构造遵循特定规则的合法数列。合法序列始于`n`,新元素不超过前一项的一半。任务是找出所有这样的数列数量。例如,当`n=6`时,合法序列包括`6`, `6,1`, `6,2`, `6,3`, `6,2,1`, `6,3,1`。程序通过动态规划求解,当`i`为奇数时,`a[i] = a[i - 1]`;为偶数时,`a[i] = a[i - 1] + a[i / 2]`。代码中预处理数组`a`并输出`a[n]`作为答案。输入`n`后,程序直接计算并打印合法数列个数。
49 0
|
6月前
|
Serverless
P1149 [NOIP2008 提高组] 火柴棒等式
P1149 [NOIP2008 提高组] 火柴棒等式
|
6月前
|
C语言
浙大版《C语言程序设计(第3版)》题目集 练习8-2 计算两数的和与差 (10分)
浙大版《C语言程序设计(第3版)》题目集 练习8-2 计算两数的和与差 (10分)
|
6月前
P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题
P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题
34 0
|
算法 Java 测试技术
LeetCode 周赛上分之旅 #46 经典二分答案与质因数分解
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
63 0
LeetCode 周赛上分之旅 #46 经典二分答案与质因数分解
|
机器学习/深度学习
P1403 [AHOI2005]约数研究(数学归纳,细心分析)
P1403 [AHOI2005]约数研究(数学归纳,细心分析)
70 0
|
机器学习/深度学习 人工智能
1320:【例6.2】均分纸牌(Noip2002) 2020-11-30
1320:【例6.2】均分纸牌(Noip2002) 2020-11-30
108 0
|
Java C语言 C++
【蓝桥杯基础题】2020年省赛填空题—既约分数
【蓝桥杯基础题】2020年省赛填空题—既约分数
【蓝桥杯基础题】2020年省赛填空题—既约分数