GCD and LCM

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)
Total Submission(s): 2982    Accepted Submission(s):
1305

Problem Description
Given two positive integers G and L, could you tell me
how many solutions of (x, y, z) there are, satisfying that gcd(x, y, z) = G and
lcm(x, y, z) = L?
Note, gcd(x, y, z) means the greatest common divisor of x,
y and z, while lcm(x, y, z) means the least common multiple of x, y and z.

Note 2, (1, 2, 3) and (1, 3, 2) are two different solutions.
 
Input
First line comes an integer T (T <= 12), telling the
number of test cases.
The next T lines, each contains two positive 32-bit
signed integers, G and L.
It’s guaranteed that each answer will fit in a
32-bit signed integer.
 
Output
For each test case, print one line with the number of
solutions satisfying the conditions above.
 
Sample Input
2
6 72
7 33
 
Sample Output
72
0
 
Source
 
Recommend
liuyiding   |   We have carefully selected several
similar problems for you:  6263 6262 6261 6260 6259 
 

题目大意:
  求gcd(x,y,z)=G且lcm(x,y,z)=L的方法数。
题目分析:
  起初这道题一点想法都没有。。看了题解才有些想法。
  首先如果L不能被G整除的话,这样的组合一定不存在。
  当这样的组合存在的时候,所求与  求gcd(x,y,z)=1且lcm(x,y,z)=L/G的方法数是等价的。
  那么:令temp=L/G。
  对temp进行素数分解:temp=p1^t1 * p2^t2 * ……* pn^tn。
  因为temp是这三个数的倍数,因而x,y,z的组成形式为:
  x=p1^i1 * p2^i2 *…… * pn^in;
  y=p1^j1 * p2^j2 *…… * pn^jn;
  z=p1^k1 * p2^k2 * …… * pn^kn;
  对于某一个素因子p:

          因为要满足x,y,z的最大公约数为1,即三个数没有共同的素因子,所以min(i,j,k)=0。
          又因为要满足x,y,z的最小公倍数为temp,即p^t必然要至少存在一个,所以max(i,j,k)=t。
          换言之:至少要有一个p^t,以满足lcm的要求;至多有两个包含p,以满足gcd的要求。
          因而基本的组合方式为(0,p^t,p^k),k=0-->t。
          而因为(1,2,3)和(2,1,3)是不同的方法,所有满足要求的方法中,除了(0,0,t)和(0,t,t)
                     各有3种排列之外,其余都有6种排列。
          对于某一个素因子p总的方法数为6*(t-1)+2*3=6*t。
  在根据组合排列的知识,素数与素数之间是分步的关系,因而总的方法数为:6*(t1+t2+……+tn)

对于某个r,i、j、k里面一定有一个是r,并且一定有一个是0,所以i,j,k有一下3种情况:

r 0 0 ,有C(3,1)种
r 0 r ,有C(3,1)种
r 0 1~r-1 ,有(r-1)*A(3,3)种

所以一共是6*r种。

题外话(2个的时候):给你gcd(a,b)和lcm(a,b),让你找最小的a和b。
因为(a*b)/gcd=lcm.那么(a/gcd*b/gcd)*gcd=lcm因此(a/gcd*b/gcd)=lcm/gcd。题目即可转换为把lcm/gcd分解成两个互质的数
 #include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
int map[];
int n, m, sum;
int main()
{
int i, j, k, sum;
scanf("%d", &k);
while (k--)
{
scanf("%d%d", &n, &m);
if (m%n)
{
printf("0\n");
continue;
}
memset(map, , sizeof(map));
m = m / n;
j = ;
for (i = ; i*i <= m; i++)//分解质因数m,i<sqrt(m)
{
if (m%i == )
{
while (m%i == )
{
map[j]++;
m = m / i;
}
j++;
}
}
if (m != )
map[j++] = ;
//样例6,72,m为12,分解为2个2,1个3,(6*2)*(6*1)
sum = ;
for (i = ; i<j; i++)
sum = sum * * map[i];
printf("%d\n", sum);
}
return ;
}

HDU 4497 GCD and LCM(数论+容斥原理)的更多相关文章

  1. HDU 4497 GCD and LCM (数论)

    题意:三个数x, y, z. 给出最大公倍数g和最小公约数l.求满足条件的x,y,z有多少组. 题解:设n=g/l n=p1^n1*p2^n2...pn^nk (分解质因数 那么x = p1^x1 * ...

  2. 数论——算数基本定理 - HDU 4497 GCD and LCM

    GCD and LCM Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total ...

  3. hdu 4497 GCD and LCM 数学

    GCD and LCM Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4 ...

  4. HDU 4497 GCD and LCM (合数分解)

    GCD and LCM Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total ...

  5. hdu 4497 GCD and LCM (非原创)

    GCD and LCM Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total ...

  6. hdu 4497 GCD and LCM 质因素分解+排列组合or容斥原理

    //昨天把一个i写成1了 然后挂了一下午 首先进行质因数分解g=a1^b1+a2^b2...... l=a1^b1'+a2^b2'.......,然后判断两种不可行情况:1,g的分解式中有l的分解式中 ...

  7. HDU 4497 GCD and LCM(分解质因子+排列组合)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4497 题意:已知GCD(x, y, z) = G,LCM(x, y, z) = L.告诉你G.L,求满 ...

  8. hdu 4497 GCD and LCM(2013 ACM-ICPC吉林通化全国邀请赛——题目重现)

    质分解 + 简单计数.当时去比赛的时候太年轻了...这道题都没敢想.现在回过头来做了一下,发现挺简单的,当时没做这道题真是挺遗憾的.这道题就是把lcm  / gcd 质分解,统计每个质因子的个数,然后 ...

  9. HDU 4497 GCD and LCM (分解质因数)

    链接 :  http://acm.hdu.edu.cn/showproblem.php?pid=4497 假设G不是L的约数 就不可能找到三个数. L的全部素因子一定包括G的全部素因子 而且次方数 ...

随机推荐

  1. 一种不太合规的PreparedStatement使用方式

    这是一种不太合规的PreparedStatement调用使用方式 , 没有让Dao单独执行它单纯的任务. AccountDao.java package heartl_jdbc; /** * 银行操作 ...

  2. ZOJ 2587 Unique Attack(最小割唯一性判断)

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2587 题意:判断最小割是否唯一. 思路: 最小割唯一性的判断是先跑一遍最大 ...

  3. 《F4+2 团队项目需求分析改进》

    a.分析<动态的太阳系模型项目需求规格说明书>初稿的不足. 任务概述描述的有些不具体,功能的规定不详细,在此次作业进行了修改. b.参考<构建之法>8.5节功能的定位和优先级, ...

  4. kali debian linux 的samba 共享设置

    1) 首先,默认的源http.kali.org 会自动帮你找镜像,问题是他找到了 mirrors.neusoft.edu.cn , 这个源速度虽然快,却是有问题的. 安装不了cifs-utils 2) ...

  5. 简述 JPA 与 Spring Data JPA 与 Hibernate

    1.JPA是什么?以及相关概述 JPA的是 Java Persistence API 的简写,是Sun官方提出的一种ORM规范! Sun提出此规范有2个原因: 1.简化现有Java EE和Java S ...

  6. Spring MVC配置静态资源和资源包

    Spring MVC配置静态资源和资源包 本例映射:css目录: pom.xml <properties> <spring.version>4.3.5.RELEASE</ ...

  7. ADSL拨号上网或者光纤上网设置概要(原创)

    不管是在梧州设置光纤还是在太平设置ADSL拨号上网每次设置上网一体机的时候都是遇到各种麻烦...这次又是弄了N久,每次问题各不一样.总结一下操作过程,方便以后又遇问题回头查询自个微博.一.设置电话线的 ...

  8. JS object(对象)的学习汇总

    Object(对象)是在所有的编程语言中都十分重要的一个概念,对于事物我们可以把他们看作是一个对象,而每一个事物都有自己的表示的属性和对于某一信息作出的相应的操作.而这些东西就变成了事物的属性和方法. ...

  9. 利用Bomb打造自己的小程序

    小程序开发 Bomb免费后端云开发 首先,小程序的开发已是热门,一个前段技术人员必备的技术就是开发小程序.在这里推荐一个入门小程序文章(连胜出品). 对于小程序的入门开发就不再做详细介绍,这里针对Bm ...

  10. Spring的注解@Qualifier(二十五)

    转载:https://www.cnblogs.com/smileLuckBoy/p/5801678.html 近期在捯饬spring的注解,现将遇到的问题记录下来,以供遇到同样问题的童鞋解决~ 先说明 ...