传送门

题目描述

Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson。现在,刚刚放学回家的 Hankson 正在思考一个有趣的问题。

今天在课堂上,老师讲解了如何求两个正整数 c1 和 c2 的最大公约数和最小公倍数。现在 Hankson 认为自己已经熟练地掌握了这些知识,他开始思考一个“求公约数”和“求公倍数”之类问题的“逆问题”,这个问题是这样的:已知正整数 a0,a1,b0,b1,设某未知正整数 x 满足:

1. x 和 a0 的最大公约数是 a1;

2. x 和 b0 的最小公倍数是 b1。

Hankson 的“逆问题”就是求出满足条件的正整数 x。但稍加思索之后,他发现这样的x 并不唯一,甚至可能不存在。因此他转而开始考虑如何求解满足条件的 x 的个数。请你帮助他编程求解这个问题。

输入输出格式

输入格式:

第一行为一个正整数 n,表示有 n 组输入数据。接下来的 n 行每行一组输入数据,为四个正整数 a0,a1,b0,b1,每两个整数之间用一个空格隔开。输入数据保证 a0 能被 a1 整除,b1 能被 b0 整除。

输出格式:

输出文件 son.out 共 n 行。每组输入数据的输出结果占一行,为一个整数。

对于每组数据:若不存在这样的 x,请输出 0;

若存在这样的 x,请输出满足条件的 x 的个数;

输入输出样例

输入样例#1: 复制

2
41 1 96 288
95 1 37 1776
输出样例#1: 复制

6
2

说明

【说明】

第一组输入数据,x 可以是 9、18、36、72、144、288,共有 6 个。

第二组输入数据,x 可以是 48、1776,共有 2 个。

【数据范围】

对于 50%的数据,保证有 1≤a0,a1,b0,b1≤10000 且 n≤100。

对于 100%的数据,保证有 1≤a0,a1,b0,b1≤2,000,000,000 且 n≤2000。

很明显的,读题可得下面两个方程:

gcd(x,a0) = a1;  ------------------------------#5

lcm(x,b0) = b1;

对于50%的数据来说,直接从a1枚举到b1然后判断就行。

对于100%数据,显然这样暴力枚举是会超时的。

由上面第二个方程可得:

x0*b0/gcd(x0,b0) = b1;

移项得:

gcd(x0,b0) = x0*b0/b1;  --------------------------#6

因为(x0*b0/b1)是x0,b0的最大公约数, 两边同时除以x0*bo/b1得:

gcd(b1/b0,b1/x) = 1;   -----------------------------#1

同理,对于第一个方程,两边除以一个a1得:

gcd(x/a1,a0/a1) = 1;  ------------------------------#2

由#1 ,#2两方程可以看出,x是b1的因子,a1是x的因子。

所以我们只要枚举b1的因子(1-> sqrt(b1)),然后判定其是否满足#5与#6。

下面贴代码,有问题留言。

#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int n,a0,a1,b0,b1,ans;
int gcd(int a,int b){
return (b==?a:gcd(b,a%b));
}
int main(){
scanf("%d",&n);
while(n--){
ans = ;
scanf("%d%d%d%d",&a0,&a1,&b0,&b1);
int bq = sqrt(b1);
for(int i = ;i<=bq;i++){
if(b1%i == ){
if(gcd(i,a0) == a1 && gcd(i,b0)*b1 == i*b0) ++ans;
int j = b1 / i; //枚举另一个因子
if(j == i) continue;
if(gcd(j,a0) == a1 && gcd(j,b0)*b1 == j*b0) ++ans;
}
}
printf("%d\n",ans);
}
}

NOIP2009 T2 Hankson的趣味题的更多相关文章

  1. 「NOIP2009」Hankson 的趣味题

    Hankson 的趣味题 [内存限制:$128 MiB$][时间限制:$1000 ms$] [标准输入输出][题目类型:传统][评测方式:文本比较] 题目描述 Hanks 博士是 BT(Bio-Tec ...

  2. 【NOIP2009】Hankson 的趣味题

    题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现在,刚刚放学回家的 Hankson 正在思考一个有趣的问题. 今天在课堂上,老师讲解 ...

  3. loj2589 「NOIP2009」Hankson 的趣味题

    对于质因数分解理解还不到位. 此题可知$lcm$是$x$的倍数,$x$是$lcm$的约数,只要在$lcm$的分解质因数里对每一个质因子讨论种数即可. 具体来说,对于$lcm$的一个质因子$p$,讨论$ ...

  4. 【NOIP2009】Hankson的趣味题

    题意:给出 \(a_0\), \(a_1\), \(b_0\), \(b_1\), 求出正整数 \(x\) 的个数,\(x\) 满足: \(gcd(x,a_0)=a_1\) , \(lcm(x, b_ ...

  5. 「NOIP2009」Hankson的趣味题

    题目描述 (由于本题是数论题,所以我只把题目大意说一下...) 输入时给定\(a_0,a_1,b_0,b_1\),题目要求你求出满足如下条件的\(x\)的个数: \[\begin{cases}\gcd ...

  6. 洛谷P1072 [NOIP2009] Hankson 的趣味题

    P1072 Hankson 的趣味题 题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现在,刚刚放学回家的 Hankson 正在思考一 ...

  7. NOIP 2009 Hankson 的趣味题

    洛谷 P1072 Hankson 的趣味题 洛谷传送门 JDOJ 1648: [NOIP2009]Hankson的趣味题 T2 JDOJ传送门 Description Hanks 博士是BT (Bio ...

  8. CH3201 Hankson的趣味题

    题意 3201 Hankson的趣味题 0x30「数学知识」例题 描述 Hanks博士是BT(Bio-Tech,生物技术)领域的知名专家,他的儿子名叫Hankson.现在,刚刚放学回家的Hankson ...

  9. 算法训练 Hankson的趣味题

    算法训练 Hankson的趣味题   时间限制:1.0s   内存限制:64.0MB        问题描述 Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫Han ...

随机推荐

  1. 大学,助你成长or 让你堕落?

    不管是论坛.贴吧.还是博客,都或多或少能够看到诸如对大学教育的反思.抨击之类的文章.至于什么是大学,大学又该怎样度过.大学是助你成长还是让你堕落了?我想这应该是一个见仁见智的问题.作为一个过来人,结合 ...

  2. jquery.validate.js插件的使用方法

    近期做项目.须要用到 jQuery.validate.js插件,于是记录一下工作中的一些经验,以便日后学习. [样例例如以下] 1.前台页面 <form id="form1" ...

  3. Codeforces Round #277 (Div. 2) D. Valid Sets DP

    D. Valid Sets   As you know, an undirected connected graph with n nodes and n - 1 edges is called a  ...

  4. HDU 4099 Revenge of Fibonacci Trie+高精度

    Revenge of Fibonacci Problem Description The well-known Fibonacci sequence is defined as following: ...

  5. Java之POI读取Excel的Package should contain a content type part [M1.13]] with root cause异常问题解决

    Java之POI读取Excel的Package should contain a content type part [M1.13]] with root cause异常问题解决 引言: 在Java中 ...

  6. hdu 1532 Drainage Ditches(最大流)

                                                                                            Drainage Dit ...

  7. bzoj2503 相框——思路

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2503 思路题: 首先,这种问题应该注意到答案只跟度数有关,跟其他什么连接方法之类的完全无关: ...

  8. LA4122

    哈夫曼树+搜索 抄了抄代码 先开始不知道怎么限制哈夫曼树,然后看了看代码,是用bfs序来限制.因为每个节点的右子树节点肯定不小于左儿子,同一层也是.所以先搞出bfs序,然后搜索,判断每一层右边是否大于 ...

  9. bzoj1725 [Usaco2006 Nov]Corn Fields牧场的安排(状压dp)

    1725: [Usaco2006 Nov]Corn Fields牧场的安排 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 714  Solved: 502 ...

  10. Springboot+hibernate简单的增删改查

    1.创建好项目之后在配置端口号(也可以不用配置,默认端口8080) #server server.port= server.tomcat.uri-encoding=utf- 2.配置mysql #My ...