可能我只适合这道题的50分

但还是要争取一下的

我们知道对于\(gcd\)和\(lcm\)有这样的定义

\(a=\prod _{i=1}^{\pi(a)}p_i^{d_{i}}\)

\(b=\prod _{i=1}^{\pi(b)}p_i^{g_{i}}\)

那么则有

\(gcd(a,b)=\prod_{i=1}^{\pi(max(a,b))} p_i^{min(g_i,d_i)}\)

\(lcm(a,b)=\prod_{i=1}^{\pi(max(a,b))} p_i^{max(g_i,d_i)}\)

把上面的式子翻译成汉语就是

如果我们将\(a,b\)质因数分解,那么对于\(a,b\)所有同一个质因子,指数较小的相乘得到的就是\(gcd(a,b)\),指数较大的相乘得到的就是\(lcm(a,b)\)

比如说\(12,8\)吧

我们分解质因数

\(12=2^2*3^1\)

\(8=2^3\)

所以\(gcd(12,8)=2^{min(2,3)}*3^{min(1,0)}=2^2=4\)

\(lcm(12,8)=2^{max(2,3)}*3^{max(1,0)}=2^3*3^1=24\)

于是有了这个性质,我们做这道题就比较简单了

那我们的核心就是把\(a0,a1,b0,b1\)都分解质因数

之后对于相同的质因子我们都要讨论一下他的指数,来推出\(x\)的指数

如果有解的话,这个指数必定是一个范围,所以我们可以求出每个指数的范围之后乘法原理得出答案

如果无解我们就中途判断推出就好了

但是还有一个问题,我们分解质因数的话应该怎么分解,分解到一个什么范围

我们知道整数还有一个一个性质:每个整数\(n\)至多有一个大于\(\sqrt{n}\)的质因子

尽管这里的数都很大,小于等于\(2E9\)但是我们只需要筛出\(1\)到\(\sqrt{2E9}\)之间的质数,剩下的那个质因子我们特判就可以了

代码

#include<iostream>
#include<cstdio>
#include<cmath>
#include<bitset>
#define LL long long
#define re register
#define maxn 50005
using namespace std;
int T;
int p[maxn],tot;
bitset<maxn> f;
LL a0,a1,b0,b1;
inline LL read()
{char c=getchar();LL x=0;while(c<'0'||c>'9') c=getchar();while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+c-48,c=getchar();return x;
}
int main()
{T=read();f[1]=1;for(re int i=2;i<=maxn-5;i++){if(!f[i]) p[++tot]=i;for(re int j=1;j<=tot&&p[j]*i<=maxn-5;j++){f[p[j]*i]=1;if(i%p[j]==0) break;}}//欧拉筛,由于sqrt(2000000000)大概为45000,所以筛到50000就可以了while(T--){LL ans=1;int flag=0;a0=read();a1=read();b0=read();b1=read();for(re int i=1;i<=tot;i++){if(a0==1&&a1==1&&b0==1&&b1==1) break;int num1=0,num2=0,num3=0,num4=0;while(a0%p[i]==0) num1++,a0/=p[i];while(a1%p[i]==0) num2++,a1/=p[i];while(b0%p[i]==0) num3++,b0/=p[i];while(b1%p[i]==0) num4++,b1/=p[i];//统计这个质因子对应的指数应该是多少if(num1<num2||num3>num4) //如果这个a0质因子的指数小于a1的,那么就无解,因为a1的指数应该是最小的//如果这个b0质因子的指数大于b1的,那么就无解,因为b1的指数应该是最大的{flag=1;break;}if(num3<num4) //如果b0的指数小于b1的,说明x此时的指数应该为num4,所以此时对答案没有贡献,判断是否有解之后退出{if(min(num4,num1)!=num2){flag=1;break;}continue;}if(num1>num2)//如果a0的指数大于a1的,说明x此时的指数应该为num2,所以此时对答案没有贡献,判断是否有解之后退出{if(max(num2,num3)!=num4){flag=1;break;}continue;}if(num3<num1){flag=1;break;}ans=ans*(num3-num1+1);}if(!flag&&(a1!=1||a0!=1||b0!=1||b1!=1)){if(a1>a0) flag=1;if(b1<b0) flag=1;if(b1==b0&&b1!=1) ans<<=1;}if(!flag) cout<<ans<<endl;else puts("0");}
}

转载于:https://www.cnblogs.com/asuldb/p/10207829.html

【Hankson 的趣味题】相关推荐

  1. Hankson的趣味题

    Hankson的趣味题 时间限制: 1 Sec  内存限制: 128 MB [提交][状态][讨论版] 题目描述 已知正整数a0,a1,b0,b1.设某未知正整数x 满足: 1. x 和a0 的最大公 ...

  2. 约数——Hankson的趣味题

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

  3. java蓝桥杯练习 Hankson的趣味题

    java蓝桥杯练习 Hankson的趣味题 资源限制 时间限制:1.0s 内存限制:64.0MB 问题描述 Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫Hank ...

  4. 洛谷1072 Hankson 的趣味题

    https://www.luogu.org/problem/show?pid=1072 Hankson 的趣味题 正解:素数筛+因数分解+乘法原理.简单地来说就是我不会! 但是考虑: 1.从b1入手, ...

  5. d778: NOIP2009 2.Hankson的趣味题

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

  6. [NOIp 2009]Hankson的趣味题

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

  7. P1072 [NOIP2009 提高组] Hankson 的趣味题

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

  8. 【noip】HankSon的趣味题

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

  9. CODEVS 1172 Hankson 的趣味题

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

  10. 2017.4.22 hankson的趣味题 思考记录

    这个题非常的不容易 ,第一遍交爆零了 首先根据最大公约数和最小公倍数可知: 这个数x一定包含a1的所有质因数 这个数x一定不包含a0/a1的所有质因数 这个数一定包含b1/b0的所有质因数 这个数可能 ...

最新文章

  1. Shell脚本判断IP是否合法性(多种方法)
  2. 第九届蓝桥杯 Java B组 第三题 复数幂 (详解)
  3. 三运放差分放大电路分析_三运放差分放大电路
  4. zabbix 时间错误_一键部署Zabbix+Grafana+Icinga+SmokePing监控系统
  5. java 正则匹配引号_java 正则 贪婪匹配 匹配sql语句中的引号内容
  6. 番石榴的EventBus –简单的发布者/订阅者
  7. .NET中的内存管理,GC机制,内存释放过程
  8. 前端开发面试题收集(html部分)
  9. linux工程常用的应用命令总结:
  10. Oracle磁带机扩容方案,IBM TS3500带库磁带机扩容方案.doc
  11. 照猫画虎owin oauth for qq and sina
  12. Docker从理论到实践(九)------使用Dockerfile创建镜像
  13. 51单片机LCD12864程序移植到STM32F103C
  14. 关于SPSS软件的使用
  15. html是乱码怎么解决,如何解决html乱码问题
  16. 宏观经济的基本指标及其衡量
  17. 实时数仓 大数据 Hadoop flink kafka
  18. matlab图像的错切变换,matlab 图像几何变换+答案
  19. GitHub有什么作用?
  20. mysql解决aba问题_AtomicStampedReference解决CAS的ABA问题

热门文章

  1. bzoj5090[lydsy11月赛]组题
  2. Hadoop Streaming详解
  3. springmvc ajax 页面无法重定向问题!!!!
  4. iOS之由身份证号返回性别
  5. 解决虚拟机 正在决定eht0 的ip信息失败 无链接-- 添加虚拟网卡
  6. Eclipse出现the type java.lang.CharSequence can't be resolved.
  7. C# winform 窗体怎么隐藏标题栏,不显示标题栏
  8. (转)CentOs 设置静态IP 方法
  9. Oracle优化检查表
  10. 同一服务器部署多个tomcat时的端口号修改详情