GCD and LCM

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

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
 
题解:首先我们要知道GCD和LCM的性质:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAm8AAACPCAIAAAAjj6t0AAAReElEQVR4nO2dO7abShBFmZETR8zFkddiLg68lobixIzkRdZgeIEk1J/qbyEouHtHtgRN6VTD6a5u6Q4LAAAA6BiODgAAAOD04KYAAABacFMAAAAtuCkAAIAW3BQAAEALbgoAAKAFNwUAANCCmwIAAGjBTQEAALTgpgAAAFpwUwAAAC24KQAAgBbcFAAAQAtuCgAAoAU3BQAA0IKbAgAAaMFNAQAAtOCmAAAAWnDTL8s8DcMwTHPreffbOAzDMIy3+yfCOkMgSNcN0lnm9Nl5cFQ4uOmXpevOmSc798yDx53T/gDQgHTdIJ1lLpKdB/vnCDeFeu630eB9YzOqAJtB2owqwGaQNqPaH8s67B0bbgr1zJPJAbnRsDyMxmg0LA+jMRoNa29My7BzcLjpBXjUZx6jsNeSwTome73p9yr3lFwjfle830bvFee4x8vvF+q78DvA11lOs1UDy3nqHoEiHdLtL90OnDs7yxYJWnbPEW56DR5rF+P47DuPjjeOo98Tve4cL3cEjSSOCHpn0HLXaPBx57gNt6x5hPdzI0iHdHKrWZTS7cC5s7NoE7TsnyPc9BqE3ex567w7YnwXxIsKUV+NThK7p3PaPPX13iiWloaUA1CkQzrnyjtJtwMnz44UTmNbe+cIN70GYr+LCjA1d07UiPNCcqy3lmV6+248mm1oSXfTIB3Sre3tJt0OmMzO69WGAoCYoLp2qPRCB5+/cwr743q/qeZd2ylBNd4Dit17SId0r3/vJ90OWM1OS+E3l6C6dvbM0aFu2rCsrNDkvZxdOt/8aDPN8ePQcZrGlMZVwq4RJ8o56UbOPsGSpXO3YRQ+Xlq6UiNId5B0O2A6O9UjoEKCmJu6PB0185GfR6gWk+P1bO2Bxtjnzkmvkbi796R9gjWaPkOO622FRrZY/DMnnTsQj9e3QhLSFRu5vHTlUXiFdGIj5s3UaHbcMN7TqYyS+cdCtp2vt26a9y9tKedJtABfPtj0dr2IUCd5x0HcqYU1jUwjUvf0enk4NprnOXGa9IRKrIWkG3GaUm5MtSddGGLQdp106UacppDuAOl2wGp2XFMvG3w6Qbl2nNa+1J7ejNE1eWDvRUTKswFLOBXzYZr9/4+3u1+0cnfHZ19xTvIG6eH+vvcZ0XXd4yrcND+T+Eil17x0S7xe1C6d0IgTxnWli56mPdKlHsm2J6eGs5Nb0mlJUGlpaPl6ld6M0W1oac2+vJ2RX4m2FQ//PGHAKY4lk5rn3dT2NEEnXThX75Iu/bi5onSJ2l+bdPlC5Bmk24F2GWIf99+rTVCune7gVNh1003rrR3muFGN+VKUV6FkQiNcV1Xiw9KC5yu91gc+XUHGa0Ud0gmN6KLaG1WQzvO0q9eFjWwT1YVo1+Glprjg3ZCgZDuK2HS0uKk7FvAQCu0uwtDaPXkUja5kZm4FoWyUrpu618+ddrydCrtvWnb1fCyk5ktnCy732zje7sl7qdSIPOq6gHTeQ2SeEk+LgnTZRi4qnadGquuVpCs0ctjeitNnxxubPENPJKCib+fa2T9HtW4a7BV6eZm4Xux1wiEcfHhnrZ4YJiOzNylalM6kxL/wY8P267jXtZPn1dhpYOp5Wjp7sCluvN2dJ2NGnc+TyL1MNLaK5VwlLCQiaiQVyCWkiz5zwhKy0iUbubR0wT0pa1OSLtlIU/fflitkJ6yeJ88sJCjbzlE5qnNToVAa76MTJtz+6ECckcv78XKV2XgolJ7qB0dUXbsqiLDhKrqS+9Rw8uYVh946pwHpukE6y5Adm1S5qehW4YywmMzEAeLLucaERYziLDJhjAU7Pb7WuwhT8WWpGT8A0ilAOsuQHZv0u2lgUMVcpg6QjK61Y/S6aaFIbGG0J0vBnVMB0nWDdJYhO0apq/QKphPmrrh4mTqg202jImuHm+YvZMFN5YGChcjMg3TdIJ1lyI5RKnchheuOsQvt6abPpt7ndM9Nzbup/MkYhlaAdN0gnWXIjlXqvyETTgXFlc4d3FTqS8dVej+8C0mOmxunAqTrBuksU87OupWbieq+NMxNa77hXPqBLv0uJNE4j9uF9GE3zXxaUUhun5Va6fxvkSDgUi1d21e+YSOqslPzfQTYmoZ109KgVH7Iv78xLltXVLV1jq1103iGKXcu+SrJD3Z8j5SmzulvK3H7OFRJF7xgYg/38SDdVsQPt5pXqtosPRP6fmYFVDTtQipMt6Ivdd5vwp93DdY7n38Cr3L+JbwzT49vXnlthF1O+pWIytr0gU+IOGp5vXq83bl9fGqkizvo/r+eYpA+6eh+Ah9w07rskI9DaPstpKKh+tUfIZl+dWiavVfcDpGzMi8Yv43nJaW56Xi7h58i+9w83ExfEdwKmjoHc/s8aZLOP+ura9glHeMQiQ+4aW123K4cPS/hM6gqva1FiiY09+cWNVozZloZAU7g0Jc8JFy6pLvfRnTbh+rs+H25sEEEtqHCTTPW9NGVxf7Gq5Z5P3XxzWgMASt405M9ZlfLsjRK51aavrxye1CfHe9xwAbFfdC56Yef4H2WVrH/uIgFa2qcJFgI2QrN8yus9EXfrJ5vz+xDfXbejwOsdDdqKr3yT8bv89sGR9Rbj6/xvqPATTtolA4rfdPa61YMFHOuT0N2vLVS0rIP1b/eIG1D2ucBtOu418DPHz1oLqLhpi+apMNKXeqlm8O/Qb7B8grkaenY6+OAJdP9aPlr4Udyv42fv1fPXBOh1tZDvH/m/vwjxZAnGLzZqOfAirCnl+x8mrO4KaQQf42JG6eGxA9ZIV4VQbWKMYgl5L/wRdf+LLgpAMCFcEeJL0OVfr8GNgY3BQAA0IKbAgAAaMFNAQAAtOCmAAAAWnBTAAAALbgpAACAFtwUAABAC24KAACgBTcFAADQgpsCAABowU0BAAC04KYAAABacFMAAAAtuCkAAIAW3BQAAEALbgoAAKAFNwUAANCCmwIAAGjBTQEAALTgpgAAAFpwUwAAAC24KQAAgBbcFAAAQAtuCgAAoAU3BQAA0IKbAgAAaMFNAQAAtOCmAAAAWnBTAAAALbgpAACAFtwUAABAC24KAACgBTcFAADQgpsCAABowU0BAAC04KYAAABacFMAAAAtuCkAAIAW3BQAAEALbgo67rdxGIZhGG93AunETOhmAmnHTOhmAjGJMXW2DQc3BQXzZOfGePC4Pab56DjqQUM9aHgK7KXpwVbJwk2hm/ttNHhz2Iwqhc1obUaVwma0NqM6EMuCbBMbbgrdzJPJ4bfRsGSMBms0LBmjwRoN6zBM67FJcLjpZZinYV0CeC0HrOOt15tSj3m/5779buL54vuF1zH32+i1V3FK/cd4n+U0WzV6nKfuYSYaOi2g4WEa7sBF0rRskallo2ThplfisS4xjs9+8ehU4zj6vSzq0K8XHt0y+XY8fhO6YOmU6o/hNdyysBHetI2g4YKGbhwHabgDF0nTos3UslWycNMrEXah5/3x7mThNoD7bcy97bU4T1F/E/tg/pT6z+HG0dKQcpSJhgsauk0cpOEOXCVNizJTy1bJwk2vhNinotFjuteIb6+FlOi85IAufUrLB/GGrA0t6e4MNHxdHQ2P1HAHbKfp9WpDJUDMVF07VHohoO/2cNcvxCdPVNJJtZQ/pfmTOAWnxo6u2KKHhnXRNZ2KhhYxn6aWwm8uU3Xt6JNV4aaOekevAig+73upunS++SFlmubbI1hvSA02x2kaBeVyg83EKetViwqvoSdqNulGdp5X7a2htwsk/znTGpYaQcMo9J013IFzpKnadAqZsjM3fTrqgW66RQTxWrX2QGO03h7h2/JCiLvfThhxSgshqVPqxzRrcHF1rdDIFmt+djV0h93xpUISGhYb+ToalgfoFRomS562HyHG0+Re8D2ly0iaf2Jk29l33VRbMdGx0dWjVfbywUfPxtsIdZK3FQRb6Na34wUGr18+O2J498UdN33KPM+J06TnUWLBI92I01R/3qxrGMYaRFqnYboRpyk0TMVTaMRpyvTzw3yaXPuuqUKnMpVrx2lNnawTuGmTB27aUnnsbwl3PWOa/f+Pt7tfmXpl0j9p/d80O0cHg7q3JGEXrDhlPa7CTfPzho9Ues+j4RKvDrVrKDTihPEFNIweoj0app7EtienZ0hTbrWnJVOlVaNl30rvgW66oaU1+/J2Rn5J2pY1/POEUaU4YEyKn3dT25MCB42G4aS9S8P0w+XSGiZKfm0a5uuPp9JwB9r1kAzdfa82U7l2uoMTsO6mm9ZbO8zx2Aq3ccprTjKhEa5LJ/FhaeXzld7TjIC6oo1Xhjo0FBrRRXUYqmidx2hXPwwb2SaqK9IuyEtWceW7IVPJdhSxSWzgpq7xO/Yf7hVxDlujztWxSpeNGigbpeumbtS5046301BI+aUDY2uOIVtVud/G8XZP3jClRuTh15U09B4Z85R4NhQ0zDZydQ09WVKdsaRhoZHDtl1cJ03eIOX5GRKZqOjtuXa2SpbSTaVl6uj/080pmD8PGW83pwOmpHq8nvHZzLUFnm46TU79/uXHyfNq7DQw9TwtPTrY8Dbe7s5zMKPOjrw+e1Uc0cgr1tVdjGlqJBXItTSMPnzCCbIaJhv5GhoGt6ssUknDZCNNN8S2XCpNYRk9eWYhU9l2tk2Wxk2FeXNg8uJeutVP79mmFrdPJAKqaEMIWP4YKT1rysMfc9PgCtPkzSJs3B+nAQ31oOEpIE2HoHDTiuSITiS+KDaWu4KwUlGcRSaMsWCnx9d6F2Eqviw14wdwQEM9aHgKSNMh9LtpTW7q3VR6sTX7vW5aKBJbGNLl5u7cHnWgoR40PAWk6Rj63bRinXIPN42KrB1umr+QBTeVBwoWIjsPaKgHDU8BaTqGE7tptP7aPTc176byJ2Os2QIa6kHDU0CaDuKsbip1mOMqvR/ehSTHzd3RAhrqQcNTUE7TuqebieqmWNmFVL81KRXOkbuQPuymmU8bNZb9LucXplZD/8sjKOlSqWHbl8Bha6rSVPNVBWhE8w0Z+XnufhVc6abpjKfDyW0Jl22zMLY+vttJU2chqvB7VeBQpWHwgonN3IZAw82Jvy1Y80pVm6XHRd8Pr0COtr/IJvuQ757uMWIJNZ3t2vmX8M48Pb5e5bURXmn1m7ivpu/3w58HcdSx/68zUu4RkRoN4+4bfHv6i9OnIR0yxwfctC5NJOYT1LhptvjllXXS9Z7nO/UvupeWn2deWNMsTM6kuel4u4e/BJN9XB5upt4PSiWSEBzMPRLSpKF/FmI+6dKQAUmWD7hpbZrczh09SqGL2krvUWjuxi1qtGbMtDICDECiL4to6dKh4f02IuDOVKfJ792FvSNQhXU3VVii8GtJ+118MxpDwAEEetLIpMqnSUO32oSEe1KfJu9Jwd7FTTDvpr2Wdr/l/wRJDRasqXFKYCFkczRPq7DSiL7pPd+e2Zn6NL2fFFjpVpzATZdj6q3H13jfUeCmGho1xEoFWvvhioHyzheiIU3eWin52YRzuOmy8yjXwM8fPWgumeGmEU0aYqUi9RrO4d8g32DBBSpp6errk4Il0804jZsuy/LsLZ++M89c+KCypiLeNnN//iViqCQYztmo8ECMsKeXNCk5l5tCCvHXmLg7mkj8ohUqthF8AY3BiEmCCnziC//QBG4KAPCVcMeNL0OVftoG2sBNAQAAtOCmAAAAWnBTAAAALbgpAACAFtwUAABAC24KAACgBTcFAADQgpsCAABowU0BAAC04KYAAABacFOAT/Dnh/Sjvw7ffv13dIwAsB24KcAn+PNj+PFn/ef67/fbW7jpv9/fh59/NQcAwEbgpgCf4OWmwhz126//tnHTvz+HIWeWf38O+QMAYDNwU4BP8OfH8OPXr28P/3zNTP/79e1Z4d3ATf/+HL5/T009//3+PgzD958/mZsC7ANuCvAJnErve4L6dlC1m/77/f3n33Qh99/fv/8WKr0A+/E/ZpodNwf9UTQAAAAASUVORK5CYII=" alt="" width="471" height="108" />
那么对gcd(a,b,c) GCD每个素因子上面也就是 min(xi,yi,zi) LCM 每个素因子上面就是 max(xi,yi,zi),我们先将LCM分解,然后用其每个素因子对GCD进行分解,如果分解之后GCD不为1,那么就肯定没有这样的组合。然后对每个素因子进行询问,假设当前的素因子是 p ,它的GCD指数是G,LCM的指数是L,如果G>L,那么肯定就不存在这样的组合了,如果G<L,那么第二大的数肯定就在 [L,G] 的区间内,当第二个数字位于(L,G)时,这三个数字有6种组合,当第二个数字等于L或者G时,三个数字有三种组合,所以每个因子的数的组合是 6*(L-G-1)+6=6*(L-G)种,如果L==G那么组合就是唯一的。最终的结果就是每个因子对应的组合数相乘。
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
const int N = ;
int p[N],e[N];
int p1[N],e1[N];
int main()
{
int tcase;
scanf("%d",&tcase);
int a,b;
while(tcase--){
scanf("%d%d",&a,&b);
int id=,id1=;
memset(e,,sizeof(e));
memset(e1,,sizeof(e1));
for(int i=;i*i<=b;i++){
while(b%i==){
p1[id1]=i;
while(b%i==) {b/=i;e1[id1]++;}
id1++;
}
}
if(b>) {p1[id1]=b;e1[id1++]=;}
for(int i=;i<id1;i++){
if(a%p1[i]==){
p[id] = p1[i];
while(a%p1[i]==){
a/=p1[i];
e[id]++;
}
id++;
}
else{
p[id]=p[i];
e[id++] = ;
}
}
if(a!=){
printf("0\n");
continue;
}
int sum = ;
bool flag = false;
for(int i=;i<id1;i++){
if(e[i]<e1[i]){
sum*=*(e1[i]-e[i]);
}
if(e[i]>e1[i]) {
flag = true;
break;
}
}
if(flag) {
sum = ;
}
printf("%d\n",sum);
}
return ;
}

hdu 4497(排列组合+LCM和GCD)的更多相关文章

  1. HDU 1521 排列组合 指数型母函数

    排列组合 Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u Submit Status D ...

  2. Hdu 1521 排列组合

    a1 n1 a2 n2 ... ak nkn=n1+n2+...+nk从n个数中选r个排列(不是组合噢)// 指数型母函数// 模板#include <iostream> #include ...

  3. HDU 1521 排列组合 (母函数)

    题目链接 Problem Description 有n种物品,并且知道每种物品的数量.要求从中选出m件物品的排列数.例如有两种物品A,B,并且数量都是1,从中选2件物品,则排列有"AB&qu ...

  4. hdu 4535(排列组合之错排公式)

    吉哥系列故事——礼尚往来 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tota ...

  5. hdu 1521 排列组合 —— 指数型生成函数

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1521 标准的指数型生成函数: WA了好几遍,原来是多组数据啊囧: 注意精度,直接强制转换(int)是舍去小 ...

  6. hdu 4705 排列组合

    思路:枚举能是A,B,C在一条简单路径上的中点. 计算多少个几何能满足.在用总数减去 #pragma comment(linker, "/STACK:16777216") #inc ...

  7. hdu 1521 排列组合【指数型生成函数】

    根据套路列出式子:\( \prod_{i=1}^{n}\sum_{j=0}^{c[i]}\frac{x^j}{j!} \),然后暴力展开即可 #include<iostream> #inc ...

  8. 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,求满 ...

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

随机推荐

  1. C语言分步编译

    在进行C语言源码至可执行程序的整个过程中,整个形成过程可以分为四步: 1.预处理 gcc -E hello.c -o hello.i 目的: (1)宏定义展开 (2)头文件展开 (3)条件编译 (4) ...

  2. [Uva1642]魔法Gcd(数论)

    Description 给定n个数,某个连续区间[L,R]的收益为\(gcd(A_l,A_{l+1},A_{l+2}...A_r)*(r-l+1)\), 求收益最大的区间的收益值 \(1 \leq n ...

  3. D3DXCreateTextureFromFile

    HRESULT D3DXCreateTextureFromFile( __in LPDIRECT3DDEVICE9 pDevice, __in LPCTSTR pSrcFile, __out LPDI ...

  4. 安装Mysql community server遇到计算机中丢失msvcr120.dll

    一.下载community server版本 Mysql community server版本:https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7 ...

  5. Windows系统中 JDK安装及环境配置

    需要安装jdk的第一步就是先去官网下载好JDK,选择需要的版本. Windows系统 1.将下载好的压缩包解压,点击解压得到的jdk执行文件开始安装.在安装过程中会弹出两个安装,一个是jdk,一个是j ...

  6. 课堂笔记III

  7. Android之操作相册

    获取手机中的图片的绝对路径并且区分出每个文件夹下的路径: 存放图片绝对路径的文件夹的名字和存放绝对路径的List 实体类如下: import java.util.ArrayList; import j ...

  8. 【bzoj1520】[POI2006]Szk-Schools 费用流

    题目描述 输入 输出 如果有可行解, 输出最小代价,否则输出NIE. 样例输入 5 1 1 2 3 1 1 5 1 3 2 5 5 4 1 5 10 3 3 3 1 样例输出 9 题解 费用流 设xi ...

  9. 【POJ2774】Long Long Message (SA)

    最长公共子串...两个字符串连在一起,中间放一个特殊字符隔开.求出height之后,枚举height,看两个后缀是不是分布于两段字符串..如果是,这个值就可以作为答案.取最大值即可. ; var c, ...

  10. Mysql 数据库备份工具 xtrabackup

    1.安装测试数据库mysql5.7 详细步骤 yum install -y gcc gcc-c++ cmake bison ncurses-devel .tar.gz cd mysql-/ cmake ...