描述

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整除。

输出格式

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

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

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

样例1

样例输入1[复制]

2

41 1 96 288

95 1 37 1776

样例输出1[复制]

6

2

限制

每个测试点1s

【题目链接】:http://noi.qz5z.com/viewtask.asp?id=z12

【题解】



题目的要求是

gcd(x,a0)==a1;···①

lcm(x,b0)==b1;···②

则根据最大公约数gcd和lcm的关系->q*w/gcd(q,w) == lcm(q,w);

由①②可得

gcd(x,a0)==a1;

gcd(x,b0) == x*b0/b1

进一步两边同时除右边那个东西

gcd(x/a1,a0/a1)==1; ···③

gcd(b1/b0,b1/x)==1; ···④

而题目限制了a1能整除a0,b0能整除b1;

而a1<=b1(因为要求x和a0的最大公因数为a1则x>=a1,又x和b0的最小公倍数为a1,所以x<=b1->则a1<=b1);

所以只要枚举b1的因子x就好;(因为b1/x要为整数);

然后再看看a1能不能整除x(因为x/a1也要为整数);

最后再判断③和④是不是成立的;

写个gcd就好;

b1的因子的话只要i从1->sqrt(b1)枚举就好;

然后i是b1的因子的话b1/i也是b1的因子(对称的);

(要注意x*x的情况,不然会多算);

数的因子其实没想象的那么多(我记得1e8才100多个的样子);

所以最后虽然又乘了1000;

也只是相当于for (i= 1 ->8e7左右);

外层判断一下i是不是b1的因子;

但是(进入)for里面做的事情很少;(因子少);

复杂度也很可观吧.



【完整代码】

#include <cstdio>
#include <algorithm>
#include <cmath> using namespace std; int a0,a1,b0,b1,n; int main()
{
// freopen("F:\\rush.txt","r",stdin);
scanf("%d",&n);
for (int i = 1;i <= n;i++)
{
int num = 0;
scanf("%d%d%d%d",&a0,&a1,&b0,&b1);
int len = int(sqrt(double(b1)));
for (int i = 1; i<= len;i++)
if ((b1%i)==0)
{
int x = i;
if ((x%a1)==0)
if (__gcd(x/a1,a0/a1)==1 && __gcd(b1/b0,b1/x)==1)
num++;
x = b1 / x;
if (x!= i && (x%a1)==0)
if (__gcd(x/a1,a0/a1)==1 && __gcd(b1/b0,b1/x)==1)
num++;
}
printf("%d\n",num);
}
return 0;
}

【z12】&&【b092】hankson的趣味问题的更多相关文章

  1. 算法训练 Hankson的趣味题

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

  2. 1172 Hankson 的趣味题[数论]

    1172 Hankson 的趣味题 2009年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Descrip ...

  3. 1172 Hankson 的趣味题

    1172 Hankson 的趣味题 2009年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Descrip ...

  4. Codevs 1172 Hankson 的趣味题 2009年NOIP全国联赛提高组

    1172 Hankson 的趣味题 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description Hanks 博 ...

  5. 一本通1626【例 2】Hankson 的趣味题

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

  6. 洛谷 P1072 Hankson 的趣味题 解题报告

    P1072 \(Hankson\)的趣味题 题目大意:已知有\(n\)组\(a0,a1,b0,b1\),求满足\((x,a0)=a1\),\([x,b0]=b1\)的\(x\)的个数. 数据范围:\( ...

  7. CH3201 Hankson的趣味题

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

  8. luogu P1072 Hankson的趣味题

    题目链接 luogu P1072 Hankson 的趣味题 题解 啊,还是noip的题好做 额,直接推式子就好了 \(gcd(x,a_0)=a_1=gcd(\frac{x}{a_1},\frac{a_ ...

  9. 洛谷P1072 Hankson 的趣味题

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

  10. NOIP 2009 Hankson 的趣味题

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

随机推荐

  1. Linq聚合函数使用

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. Java(标识符,关键字,注释,常量,变量)

    标识符 在java程序中有些名字是可以自定义的,那么这些自定义的名字我们就称作为自定义的标识符. 标识符要注意的细节: 标识符的组成元素是由字母(a-zA-Z).数字(0-9).下划线(_).美元符号 ...

  3. Vue移动端flexible.js+MuseUi

    因为公司有个项目需求,手机端的.之前就写了一个一样的项目,只不过是用原生的写的,心想刚写了个vue后台管理系统,何不也用vue写,所有就没有把之前的利用过来.那么问题来了,要让手机端自适应我们该怎么做 ...

  4. Finance and Good Society

    Finance is a technology of great power. It plays an important role in our society which range from t ...

  5. IIS6/7/8 WEBserver不能訪问grf报表模板文件的问题

    通过 IE不能訪问到 .grf 报表文件,这是由于 IIS6/7/8对訪问的扩展名做了限制,除了已经定义的扩展名之外.其它的扩展名都不能訪问.这跟 IIS5 不一样,IIS5 对全部的扩展名都不做限制 ...

  6. 将字符串使用md5加密

    >>> import md5 >>> md5.md5('123').hexdigest() '202cb962ac59075b964b07152d234b70' & ...

  7. 魔兽世界serverTrinitycore分析一:前言

    一:简单介绍 项目地址:https://github.com/TrinityCore/TrinityCore 帖一段官网介绍吧 TrinityCore is a MMORPG Framework ba ...

  8. 电商系统Broadleaf文档翻译(六) - 主要实体main entities

    主要实体 原文标题:main entities 原文出处:http://www.broadleafcommerce.com/docs/core/current/broadleaf-concepts/d ...

  9. 怎样解决git提交代码冲突

    当我们使用git提交代码时,别人可能也同一时候改动了我们改动的文件,可是别人的先合入到配置库里边,这样当我们的提交要合入时.就会产生冲突,能够使用下面步骤来解决冲突: (1) git rebase   ...

  10. dropdown下拉菜单

    <!--声明方式的下拉菜单:三个要点--> <!--1 外围容器用dropdown包裹--> <!--2 内部点击事件data-toggle--> <!--3 ...