把 c 改成 d 下了两个点。

题目描述

已知正整数 a0,a1,b0,b1a_0,a_1,b_0,b_1a0​,a1​,b0​,b1​,设某未知正整数 xxx 满足:

  1. xxx 和 a0a_0a0​ 的最大公约数是 a1a_1a1​;
  2. xxx 和 b0b_0b0​ 的最小公倍数是 b1b_1b1​。

求满足条件的 xxx 的个数。

Solution 1

考虑一个式子。∀a,b∈N∗\forall a,b\in\N^*∀a,b∈N∗ 有a×b=gcd⁡(a,b)×lcm(a,b)a\times b=\gcd(a,b)\times\text{lcm}(a,b)a×b=gcd(a,b)×lcm(a,b)

枚举 gcd⁡(x,b0)\gcd(x,b_0)gcd(x,b0​),算出 xxx,判断 xxx 是否满足 1. 条件。统计答案,输出。时间复杂度 O(Tb1⋅lg⁡b1)O(T\sqrt{b_1}·\lg b_1)O(Tb1​​⋅lgb1​)。

  1. #include<cstdio>
  2. #include<cstdlib>
  3. #include<cstring>
  4. #include<algorithm>
  5. #define int long long
  6. int T;
  7. int a,b,c,d;
  8. int check(int Gcd){
  9. int x=d/c*Gcd;
  10. if(std::__gcd(c,x)!=Gcd) return 0;
  11. if(std::__gcd(x,a)!=b) return 0;
  12. return 1;
  13. }
  14. int work(){
  15. int sum=0;
  16. for(int i=1;i*i<=d;++i){
  17. if(d%i) continue;
  18. sum+=check(i);
  19. if(i*i!=d) sum+=check(d/i);
  20. }
  21. return sum;
  22. }
  23. signed main(){
  24. scanf("%lld",&T);
  25. while(T--){
  26. scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
  27. printf("%lld\n",work());
  28. }
  29. }

Solution 2 By @zzlzk

容易想到,∀a,b,k∈N∗\forall a,b,k\in\N^*∀a,b,k∈N∗ 有gcd⁡(a,b)=k⇔gcd⁡(ak,bk)=1\gcd(a,b)=k\quad\Leftrightarrow\quad\gcd(\frac ak,\frac bk)=1gcd(a,b)=k⇔gcd(ka​,kb​)=1

化一下式子,得到

{gcd⁡(xa1,a0a1)=1,gcd⁡(b1b0,b1x)=1.\begin{cases}\gcd(\frac x{a_1},\frac{a_0}{a_1})=1,\\ \gcd(\frac{b_1}{b_0},\frac{b_1}x)=1.\end{cases}{gcd(a1​x​,a1​a0​​)=1,gcd(b0​b1​​,xb1​​)=1.​

枚举 b1b_1b1​ 的因子,判断是不是 a1a_1a1​ 的倍数即可。时间复杂度 O(Tb1⋅lg⁡b1)O(T\sqrt{b_1}·\lg b_1)O(Tb1​​⋅lgb1​)。

  1. #include<cstdio>
  2. using namespace std;
  3. int gcd(int a,int b) {
  4. return b==0?a:gcd(b,a%b);
  5. }
  6. int main() {
  7. int T;
  8. scanf("%d",&T);
  9. while(T--) {
  10. int a0,a1,b0,b1;
  11. scanf("%d%d%d%d",&a0,&a1,&b0,&b1);
  12. int p=a0/a1,q=b1/b0,ans=0;
  13. for(int x=1;x*x<=b1;x++)
  14. if(b1%x==0){
  15. if(x%a1==0&&gcd(x/a1,p)==1&&gcd(q,b1/x)==1) ans++;
  16. int y=b1/x;//得到另一个因子
  17. if(x==y) continue;
  18. if(y%a1==0&&gcd(y/a1,p)==1&&gcd(q,b1/y)==1) ans++;
  19. }
  20. printf("%d\n",ans);
  21. }
  22. return 0;
  23. }

[NOIp2009] luogu P1072 Hankson 的趣味题的更多相关文章

  1. luogu P1072 Hankson的趣味题

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

  2. luogu P1072 $Hankson$ 的趣味题

    这里提供两种做法 sol 1 考虑两个数\(A,B\)和\(C=gcd(A,B),D=lcm(A,B)\)的关系 设\(S=\{2,3,5...P_n\}\)为质数集合\(p_{x,i}\)表示\(x ...

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

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

  4. 洛谷P1072 Hankson 的趣味题

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

  5. Java实现洛谷 P1072 Hankson 的趣味题

    P1072 Hankson 的趣味题 输入输出样例 输入 2 41 1 96 288 95 1 37 1776 输出 6 2 PS: 通过辗转相除法的推导 import java.util.*; cl ...

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

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

  7. 【Luogu】P1072 Hankson 的趣味题 题解

    原题链接 嗯...通过标签我们易得知,这是一道数学题(废话) 其中,题目给了这两个条件: \(gcd(x,a_0)=a_1,lcm(x,b_0)=b_1\) 所以,根据 \(gcd\) 与 \(lcm ...

  8. 洛谷P1072 Hankson 的趣味题(题解)

    https://www.luogu.org/problemnew/show/P1072(题目传送) 数学的推理在编程的体现越来越明显了.(本人嘀咕) 首先,我们知道这两个等式: (a0,x)=a1,[ ...

  9. 【题解】洛谷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) ( ...

随机推荐

  1. 5、链表队列(java实现)

    1.图例 2.链表节点 public class Node<T> { public T data; public Node next; } 3.具体实现 public class Link ...

  2. Java 教程 (Java 对象和类)

    Java 对象和类 Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 本节我们重点研究对象和类的概念. 对象:对象是类的一个实例(对象不是找个女朋友 ...

  3. 第二次实验报告:使用Packet Tracer分析应用层协议

    个人信息:      •  姓名:李微微       •  班级:计算1811       •  学号:201821121001 一.摘要 本文描述使用Packet Tracer,正确配置网络参数,抓 ...

  4. Intellij IDEA 2019 + Java Spring MVC + Hibernate学习笔记(2)

    书接上文 首先根据各种Spring MVC教程,建立了基础的结构,是否合理不知道,姑且先这样,有问题再解决问题.学习新东西,不能怕掉坑里... 查询网上别人的经历说需要把根目录下的lib目录下的所有包 ...

  5. Hadoop点滴-HDFS命令行接口

    1.-help[cmd] 显示命令的帮助信息 ./hdfs dfs -help ls1 2.-ls(r) 显示当前目录下的所有文件 -R层层循出文件夹 ./hdfs dfs -ls /log/map ...

  6. PyCharm中创建项目时,在所创建的python虚拟环境下的pip失效

    在这篇博文里,我简单地叙述了我在使用PyCharm创建一个flask项目时遇到的问题,以及我解决这个问题的过程.其中比较值得注意的点有:①PyCharm创建新项目时的解释器配置②Python虚拟环境的 ...

  7. SpringCloudEureka入门

    说明 SpringBoot版本 2.1.7.RELEASE SpringCloud版本 Greenwich.SR2 创建eureka server工程 加入pom依赖 <dependencies ...

  8. 阿里云ECS服务器提示需要修复的漏洞问题

    1.漏洞: RHSA-2018:1842: kernel security, bug fix, and enhancement updateRHSA-2018:2299: NetworkManager ...

  9. Java8新特性——lambda函数式编程

    一.遍历循环 /** * @author jiaqing.xu@hand-china.com * @version 1.0 * @name * @description 循环遍历 * @date 20 ...

  10. 【IT技术概念】什么是webservice?

    WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互. WebServi ...