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

    描述

    输入二个正整数x0,y0(2≤x0≤100000,2≤y0≤1000000),求出满足下列条件的P、Q的个数。

    条件:1.P、Q是正整数
    2.要求P、Q以xO为最大公约数,以yO为最小公倍数。

    试求,满足条件的所有可能的两个正整数的个数。

    格式

    输入格式

    两个正整数

    输出格式

    满足条件的所有可能的两个正整数的个数

    样例1

    样例输入1[复制]

    3 60

    样例输出1[复制]

    4

    限制

    每个测试点1s

    提示

    说明:(不用输出)此时的 P Q 分别为:
    3 60
    15 12
    12 15
    60 3
    所以,满足条件的所有可能的两个正整数的个数共4种

     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<string.h>
     4 #include<cmath>
     5 using namespace std;
     6 
     7 int gcd(int a,int b)
     8 {
     9     return b?gcd(b,a%b):a;
    10 }
    11 
    12 int main()
    13 {
    14     int x,y;
    15     while(~scanf("%d%d",&x,&y))
    16     {
    17         if(x==y)
    18         {
    19             printf("1\n");
    20             continue;
    21         }
    22         if(y%x!=0)
    23         {
    24             printf("0\n");
    25             continue;
    26         }
    27         if(x>y)
    28         {
    29             int temp=x;
    30             x=y;
    31             y=temp;
    32         }
    33         int dd=y/x;
    34         int i;
    35         int cnt=0;
    36         for(i=1;i<sqrt((double)dd);i++)
    37         {
    38             if(dd%i==0)
    39             {
    40                 if(gcd(i,dd/i)==1)
    41                 {
    42                     cnt++;
    43                 }
    44             }
    45         }
    46         printf("%d\n",2*cnt);
    47     }
    48     return 0;
    49 }

    这题目其实是个水题,只是错了蛮多次,都是因为自己太粗心了,没看清楚题目意思,题目并没有说,x0<y0,也没有说y0%x0==0,方法是知道,就是太不应该了,再次纪念一下自己的错误!!

  • 相关阅读:
    百度ECharts数据绑定诀窍
    SQL操作Json数据
    c# 如何得到一个字符的ASCII码
    Sql数据库收缩 语句特别快
    Hive中 使用 Round() 的坑
    [转]Hive 数据类型
    [转] Hive函数大全
    使用Hive Rest API 连接HDInsight
    Hive动态分区 参数配置及语法
    Js的引用赋值与传值赋值
  • 原文地址:https://www.cnblogs.com/ouyangduoduo/p/3011486.html
Copyright © 2011-2022 走看看