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. springboot2 + mybatis 多种方式实现多数据配置

    业务系统复杂程度增加,为了解决数据库I/O瓶颈,很自然会进行拆库拆表分服务来应对.这就会出现一个系统中可能会访问多处数据库,需要配置多个数据源. 第一种场景:项目服务从其它多处数据库取基础数据进行业务 ...

  2. MQ的理论理解

    MQ(消息队列)简介 概念 : 消息队列(MQ)是一种应用程序对应用程序的通信方法. 应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们. 消息传递指的是程序之间 ...

  3. WeChat-SmallProgram:如何定义一个组件

    创建组件所需的文件: 1.在根目录创建 Componet 文件夹 2.再创建一个select文件夹 3.然后:右键这个文件夹,新建下面的这个 Component.然后输入需要创建的名称,我这里为了方便 ...

  4. WeChat-SmallProgram:微信小程序中使用Async-await方法异步请求变为同步请求

    微信小程序中有些 Api 是异步的,无法直接进行同步处理.例如:wx.request.wx.showToast.wx.showLoading 等.如果需要同步处理,可以使用如下方法: 提示:Async ...

  5. Python数据库之数据库基本操作

    安装(基于centos) yum -y install mariadb mariadb-server # centos7版本 yum -y install mysql mysql-server #ce ...

  6. 如何基于layui的laytpl实现数据绑定

    想了半天才想起自己园子的登录密码.可想而知,多长时间没登录了 正文一开始用layui做了几个管理系统,所以用起来觉得确实很容易上手,管理后台最常用的就是form和table以及弹窗类.layui提供的 ...

  7. 手动搭建I/O网络通信框架1:Socket和ServerSocket入门实战,实现单聊

    资料:慕课网 第二章:手动搭建I/O网络通信框架2:Socket和ServerSocket入门实战,实现单聊 这个基础项目会作为BIO.NIO.AIO的一个前提,后面会有数篇博客会基于这个小项目利用B ...

  8. APScheduler轻量级定时任务框架

    目录 一.APScheduler简介 支持的后端存储作业 集成的Python框架 二.APScheduler下载安装 三.APScheduler组件 各组件简介 调度器 作业存储器 执行器 触发器 四 ...

  9. 家庭版记账本app进度之关于listview显示账单,并为其添加点击事件

    这个主要学习是关于listview的学习. 怎样去自定义adapter,以及使用.自己创建文件,还有就是为listview的每一个子控件添加点击事件. 在整个过程中收获到的知识点如下: 一.对于数据库 ...

  10. javascript中的constructor

    constructor,构造函数,对这个名字,我们都不陌生,constructor始终指向创建当前对象的构造函数. 这里有一点需要注意的是,每个函数都有一个prototype属性,这个prototyp ...