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.

InputFirst 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.OutputFor 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
昨天想了好久都没想通,,今天早上灵感突然的就来了。
题解:首先我们要理解,最大公约数和最小公倍数的关系,比如说a*b=gcd(a,b)*lcm(a,b) 如果两边同时除以gcd的平方 lcm%gcd==0 所以,如果lcm%gcd!=0的话 应该不会存在关系
第二: 我们让gcd和lcm同时除以gcd可得新的gcd和lcm gcd=1 lcm=lcm/gcd 他们分别是x/gcd y/gcd z/gcd的gcd和lcm 因此我们只要分解lcm/gcd就可以了
第三:lcm=p1^max(a1,a2,a3)*p2^max(b1,b2,b3)....
    x0=p1^a1....
    y0=p1^b1...
    z0=p1^c1...
假如说a1 b1 c1 都不为0,那么他们的最大公约数不会是1,因此他们三者中至少有一个为0 ,最多有两个为0(3个为0的情况不会出现,p1一定是其中一个数的只质因子)由于是有顺序的
(0,a1,c1)加入最多的为a1那么C1的取值为0--a1我们先考虑为0和相等的情况 有a1-1中,,变换一下顺序一共有6(a1-1)种,还有(0,0,a1)和(0,a1,a1)我们没考虑共3+3种因此共有6(a1-1)+6种
#include<iostream>
#include<cstdio>
using namespace std;
const int N=1e6+;
bool p[N]={,,};
int prime[N];
int k=;
void pre(){
k=;
for(int i=;i<N;i++){
if(p[i]==){
prime[k++]=i;
for(int j=i+i;j<=N;j+=i){
p[i]=;
}
}
}
} int main(){
pre();
int t;
cin>>t;
while(t--){
int n,m;
scanf("%d%d",&n,&m);
if(m%n!=){//最大公约数应该是最下公倍数的系数比如说a*b=gcd*lcm两边同时除以gcd的平方,so lcm%gcd=0
puts("");
continue ;
}
int x=m/n;
int sum=;
for(int i=;i<k&&prime[i]<x;i++){
if(x%prime[i]==){
int ans=;
while(x%prime[i]==){
ans++;
x=x/prime[i];
}
sum*=*ans;
}
}
if(x>) sum*=;
cout<<sum<<endl; } return ;
}
												

G - GCD and LCM 杭电的更多相关文章

  1. 2022“杭电杯”中国大学生算法设计超级联赛(6)- 1011 Find different

    2022"杭电杯"中国大学生算法设计超级联赛(6)- 1011 Find different 比赛时队友开摆,还剩半个小时,怎么办?? 当然是一起摆 Solution 看到这个题没 ...

  2. 杭电acm 1002 大数模板(一)

    从杭电第一题开始A,发现做到1002就不会了,经过几天时间终于A出来了,顺便整理了一下关于大数的东西 其实这是刘汝佳老师在<算法竞赛 经典入门 第二版> 中所讲的模板,代码原封不动写上的, ...

  3. HDOJ 4497 GCD and LCM

    组合数学 GCD and LCM Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) ...

  4. C#利用POST实现杭电oj的AC自动机器人,AC率高达50%~~

    暑假集训虽然很快乐,偶尔也会比较枯燥,,这个时候就需要自娱自乐... 然后看hdu的排行榜发现,除了一些是虚拟测评机的账号以外,有几个都是AC自动机器人 然后发现有一位作者是用网页填表然后按钮模拟,, ...

  5. 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 ...

  6. hdu 1290_献给杭电五十周年校庆的礼物

    Description 或许你曾经牢骚满腹或许你依然心怀忧伤或许你近在咫尺或许你我天各一方 对于每一个学子母校 永远航行在生命的海洋 今年是我们杭电建校五十周年,这是一个值得祝福的日子.我们该送给母校 ...

  7. AOJ 0005 GCD and LCM

    题意:求两数最大公约数和最小公倍数. 类型:辗转相除法 算法:gcd(a,b)=gcd(b,a%b),lcm(a,b)=a*b/gcd(a,b). #include <cstdio> #i ...

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

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

  9. hdu4497 GCD and LCM

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

随机推荐

  1. spring 请求静态资源文件

    在springMVC项目中使用restful风格写,需要到web.xml配置全拦截. <servlet>        <servlet-name>springmvc</ ...

  2. command > /dev/null command > /dev/null 2>&1nohup command &> /dev/null的区别

    1.对以下命令进行依次区分 command 执行一条普通的命令 command > /dev/null   '>'表示将标准输出重定向 '>>'表示追加,/dev/null是一 ...

  3. Hive手写SQL案例

    1-请详细描述将一个有结构的文本文件student.txt导入到一个hive表中的步骤,及其关键字 假设student.txt 有以下几列:id,name,gender三列 1-创建数据库 creat ...

  4. 图片OCR(Optical Character Recognition)

    目录 Photo OCR问题描述 滑动窗口(Sliding Windows) 获得大量数据和人工数据(Getting Logs of Data and Artificial Data) 瓶颈分析:需要 ...

  5. python之面向对象函数与方法,反射,双下方法

    一.函数和方法 1.函数和方法的区别 函数: 全都是显性传参,手动传参,与对象无关 方法: 存在隐性传参,与对象有关 1.1通过函数名可以判断 len()就是函数 str.count()就是方法 de ...

  6. OpenCV-Python 图像分割与Watershed算法 | 三十四

    目标 在本章中, 我们将学习使用分水岭算法实现基于标记的图像分割 我们将看到:cv.watershed() 理论 任何灰度图像都可以看作是一个地形表面,其中高强度表示山峰,低强度表示山谷.你开始用不同 ...

  7. win10系统 端口查看问题。

    首先看图根据系统自带命令netsta介绍,说明显示协议系统信息和当前TCP/IP 网络连接. 使用范例: 打开命令提示符窗口,在这里输入命令netstat -an,然后按下回车键,这时可以显示出电脑中 ...

  8. C#算法实现获取树的高度

    我们知道,树类型作为数据结构中的重要一员,树的很多实现都是来自递归.本文想要实现的就是在桌面客户端项目开发中,经常用到的树结构(.Net平台下有个控件为TreeView).事实上,我们可能因业务需求自 ...

  9. [vijos1048]送给圣诞夜的贺卡<DFS剪枝>

    题目链接:https://www.vijos.org/p/1048 很多人一看就想出了思路,不就是一个裸的dfs蛮...但是..在n<=50的情况下,朴素会直接tle..... 然后我就开始剪枝 ...

  10. phpStorm 激活方式

    phpStorm10  激活方式 方法一:   注册时选择License server  http://idea.lanyus.com/    方法二:  用户名:Ly  注册码:  \===== L ...