【题解】洛谷P1072 Hankson的趣味题 (gcd和lcm的应用)
洛谷P1072:https://www.luogu.org/problemnew/show/P1072
思路
gcd(x,a0)=a1
lcm(x,b0)=b1→b0*x=b1*gcd(x,b0) (由a*b=gcd(a,b)*lcm(a,b))
x=(b1/b0)*gcd(x,b0)
令i=gcd(x,b0)∈[1,√b0] 分成两半求减少时间复杂度 特判相等的时候
判断x=(b1/b0)*i和x=(b1/b0)*(b0/i)是否满足条件
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int n,a0,a1,b0,b1,ans;
int gcd(int a,int b)
{
if(b==) return a;
else
return gcd(b,a%b);
}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d%d%d%d",&a0,&a1,&b0,&b1);
ans=;
if(b1%b0!=)//不是整数
{
cout<<<<endl;
continue;
}
for(int j=;j*j<b0;j++)//枚举j=gcd(x,b0) 枚举一半即可
{
if(b0%j==)
{
int x=b1/b0*j;//公约数为j
if(gcd(x,b0)==j&&gcd(x,a0)==a1)
ans++;
x=b1/b0*(b0/j);//公约数为b0/j
if(gcd(x,b0)==b0/j&&gcd(x,a0)==a1)
ans++;
}
}
int k=int(sqrt(b0));//特殊情况 两者相等
if(k*k==b0)
{
int x=b1/b0*k;
if(gcd(x,b0)==k&&gcd(x,a0)==a1)
ans++;
}
cout<<ans<<endl;
}
}
【题解】洛谷P1072 Hankson的趣味题 (gcd和lcm的应用)的更多相关文章
- 洛谷 P1072 Hankson 的趣味题 解题报告
P1072 \(Hankson\)的趣味题 题目大意:已知有\(n\)组\(a0,a1,b0,b1\),求满足\((x,a0)=a1\),\([x,b0]=b1\)的\(x\)的个数. 数据范围:\( ...
- 洛谷P1072 Hankson 的趣味题
P1072 Hankson 的趣味题 题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现在,刚刚放学回家的 Hankson 正在思考一 ...
- Java实现洛谷 P1072 Hankson 的趣味题
P1072 Hankson 的趣味题 输入输出样例 输入 2 41 1 96 288 95 1 37 1776 输出 6 2 PS: 通过辗转相除法的推导 import java.util.*; cl ...
- 洛谷P1072 Hankson 的趣味题(题解)
https://www.luogu.org/problemnew/show/P1072(题目传送) 数学的推理在编程的体现越来越明显了.(本人嘀咕) 首先,我们知道这两个等式: (a0,x)=a1,[ ...
- 洛谷 P1072 Hankson 的趣味题 题解
题面 提前知识:gcd(a/d,b/d)*d=gcd(a,b); lcm(a,b)=a*b/gcd(a,b); 那么可以比较轻松的算出:gcd(x/a1,a0/a1)==gcd(b1/b0,b1/x) ...
- 洛谷 P1072 Hankson 的趣味题
题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现 在,刚刚放学回家的 Hankson 正在思考一个有趣的问题. 今天在课堂上,老师讲 ...
- [NOIP2009] 提高组 洛谷P1072 Hankson 的趣味题
题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现 在,刚刚放学回家的 Hankson 正在思考一个有趣的问题. 今天在课堂上,老师讲 ...
- 洛谷P1072 Hankson的趣味题
这是个NOIP原题... 题意: 给定 a b c d 求 gcd(a, x) = b && lcm(c, x) = d 的x的个数. 可以发现一个朴素算法是从b到d枚举,期望得分50 ...
- 洛谷 - P1072 Hankson - 的趣味题 - 质因数分解
https://www.luogu.org/problemnew/show/P1072 一开始看了一看居然还想放弃了的. 把 \(x,a_0,a_1,b_0,b_1\) 质因数分解. 例如 \(x=p ...
随机推荐
- 清除浮动clear-left-right-both-none效果
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 如何在ThinkPHP中开启调试模式
1.为什么使用调试模式? 因为调试会在我们的模板页的最后增加一些trace信息. 2.什么是trace信息? 是ThinkPHP为我们提供好的一些包含了系统运行时间.占用内存.加载时间.请求的协议.. ...
- 诠释JavaScript中的this
文章首发:http://www.cnblogs.com/sprying/p/3573456.html 使用this的几种场合 1. 执行函数时,判断函数是对象方法还是一个单独的函数?单独的函数this ...
- web前端与后台数据访问的对象封装
前言:通常情况下,在不使用angularJS/nodeJS/react等这类完整性的解决方案的js时,前端与后台的异步交互都是使用Ajax技术进行解决 一:作为java web开发工程师可能以下代码是 ...
- git把dev部分提交过的内容合并到master
git 把dev部分提交过的内容合并到master $ git reflog a6de5cc HEAD@{}: checkout: moving from wf_dev to master 303aa ...
- mysql主从复制报错 :Incorrect usage of DB GRANT and GLOBAL PRIVILEGES
在配置mysql主从复制时,想通过 grant replication slave on bbs.* to 'bbs'@'192.168.1.3' identified by '123456'; 来限 ...
- 通过tomcat shutdown port关闭tomcat
在tomcat server.xml配置文件中,有个配置项 <Server port="8005" shutdown="SHUTDOWN"> 通过向 ...
- keras 保存训练的最佳模型
转自:https://anifacc.github.io/deeplearning/machinelearning/python/2017/08/30/dlwp-ch14-keep-best-mode ...
- PHP 数字转汉字函数
/** * 数字转汉字描述 */ function numToStr($num) { // 判断正确数字 if (!preg_match('/^(\d*)(\.\d+)?$/', $num)) ret ...
- 我是一只IT小小鸟读书笔记3
Part6: 一. 无论在什么时候,师兄师姐都是我们最好的资源,遇到不会的问题一定要及时向他们请教,善于利用身边的人脉关系也是一个基本的技能. 二. 爱好很多,但特长一定要有.仔细思考一下 ...