zoukankan      html  css  js  c++  java
  • 洛谷 P1029 最大公约数和最小公倍数问题

    洛谷 P1029 最大公约数和最小公倍数问题

    链接

    https://www.luogu.org/problem/P1029

    题目

    题目描述

    输入2个正整数x0,y0(2≤x0<100000,2≤y*0<=1000000),求出满足下列条件的P,Q的个数

    条件:

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

    试求:满足条件的所有可能的2个正整数的个数.

    输入格式

    2个正整数x0,y*0

    输出格式

    1个数,表示求出满足条件的P,Q的个数

    输入输出样例

    输入 #1

    3 60
    

    输出 #1

    4
    

    说明/提示

    P,Q有4种

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

    思路

    题目就是输入x,y,一为最小公约数,一为最大公倍数,求存在的pq对数。

    p=x*k1,q=x*k2,y=x*k1*k2,k1k2互质,这就是总结之后的关系,x*y=p*q,将基于这个公式和辗转相除法来计算。

    输入xy,寻找pq乘积为xy的对,之后判断这对pq的最大公约数是不是x,是的话结果就加二(一正一反)。最后,考虑到x=y,比如3,3,若如此,结果加一。

    代码

    #include<iostream>
    
    using namespace std;
    
    int gcd(int a,int b)
    {
    	if(b!=0)
    		return gcd(b,a%b);
    	return a;
    }
    
    
    int main()
    {
    	int x,y;
    	cin>>x>>y;
    	int sum=0;
    	for(int i=1;i*i<x*y;i++)
    	{
    		if((x*y)%i==0 && gcd(i,(x*y)/i)==x)
    			sum++;
    	}
    	sum = sum*2;
    	if(x==y)
    		sum++;
    	cout<<sum;
    	return 0;
    } 
    
  • 相关阅读:
    OpenGL播放yuv视频
    windows 播放器(wzplayer)
    Lotus中的保留域
    Domino Attachment and Object Service (DAOS)
    关于MyEclipse
    DB2站点荟萃
    @IsMember用法
    深入浅出SharePoint——解读Sharepoint日志之输出缓存
    UML用例图概要
    表单设计中的网页视觉体验
  • 原文地址:https://www.cnblogs.com/blogxjc/p/11349756.html
Copyright © 2011-2022 走看看