这里提供两种做法

sol 1

考虑两个数\(A,B\)和\(C=gcd(A,B),D=lcm(A,B)\)的关系

设\(S=\{2,3,5...P_n\}\)为质数集合\(p_{x,i}\)表示\(x\)的第\(i\)种质因子数量

显然\(p_{C,i}=min(p_{A,i},p_{B,i}),p_{D,i}=max(p_{A,i},p_{B,i})\)

所以对于每种质因子,考虑在\(a_0,a_1,b_0,b_1\)的出现次数,这里分别记为\(o_1,o_2,o_3,o_4\)

以下几种情况无解

1.\(o_1<o_2\)或\(o_3>o_4\) (推出的结论)

2.\(o_1=o_2\)且\(o_3=o_4\)且\(o_1>o_3\) (答案这一种质因子数量取值范围\([o_1,o_3]\))

3.\(o_1>o_2\)且\(o_3<o_4\)且\(o_2\ne o_4\) (答案这一种质因子数量是\(o_2\),也是\(o_4\))

其他情况下,对于每一种质因子,\(ans*=(o_3-o_1+1)\)

代码被吞了qwq 其实本来就没有

sol 2

考虑枚举答案

答案显然是\(b_1\)的因数,所以只要枚举\(i\)从\(1\)到\(\sqrt{b_1}\),判断\(i\)和\(\frac{b_1}{i}\)救星了

注意\(i=\frac{b_1}{i}\)的情况

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<vector>
#include<cmath>
#include<ctime>
#include<queue>
#include<map>
#define LL long long
#define il inline
#define re register using namespace std;
const LL mod=1000000007;
il LL rd()
{
re LL x=0,w=1;re char ch;
while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*w;
}
int prm[5010],pp[50010],tt;
il LL gcd(LL a,LL b)
{
LL tm;
while(b){tm=a,a=b,b=tm%b;}
return a;
}
il LL lcm(LL a,LL b)
{
return a*b/gcd(a,b);
} int main()
{
for(int i=2;i<=45000;i++)
{
if(!pp[i]) pp[i]=i,prm[++tt]=i;
for(int j=1;j<=tt&&i*prm[j]<=45000;j++)
{
pp[i*prm[j]]=prm[j];
if(i%prm[j]==0) break;
}
}
int q=rd();
while(q--)
{
int a0=rd(),a1=rd(),b0=rd(),b1=rd(),sq=sqrt(b1),ans=0;
for(int i=1;i<=sq;i++)
{
if(b1%i) continue;
if(gcd(i,a0)==a1&&lcm(i,b0)==b1) ++ans;
if(i*i==b1) continue;
if(gcd(b1/i,a0)==a1&&lcm(b1/i,b0)==b1) ++ans;
}
printf("%d\n",ans);
}
return 0;
}

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】P1072Hankson的趣味题(gcd)

    这题真TM的趣味. 可以说我的动手能力还是不行,想到了算法却写不出来.以后说自己数论会GCD的时候只好虚了…… 我们首先这么想. x与a0的最大公约数为a1,那么我们把x/=a1,a0/=a1之后,x ...

  3. [NOIp2009] luogu P1072 Hankson 的趣味题

    把 c 改成 d 下了两个点. 题目描述 已知正整数 a0,a1,b0,b1a_0,a_1,b_0,b_1a0​,a1​,b0​,b1​,设某未知正整数 xxx 满足: xxx 和 a0a_0a0​ ...

  4. luogu 1072 Hankson 的趣味题 唯一分解定理+线性筛

    貌似是比大多数题解优的 $O(n^2logn)$ ~ Code: #include <bits/stdc++.h> #define N 50004 #define setIO(s) fre ...

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

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

  6. 算法训练 Hankson的趣味题

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

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

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

  8. 1172 Hankson 的趣味题

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

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

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

随机推荐

  1. 深度学习网络压缩模型方法总结(model compression)

    两派 1. 新的卷机计算方法 这种是直接提出新的卷机计算方式,从而减少参数,达到压缩模型的效果,例如SqueezedNet,mobileNet SqueezeNet: AlexNet-level ac ...

  2. docker--Dockerfile--java

    # AlpineLinux with a glibc-2.26-r0 and Oracle Java 7FROM alpine:3.6 MAINTAINER Anastas Dancha <an ...

  3. vmware错误汇总

    [问题来源] 因为虚拟机过大,所以直接在本地磁盘直接复制,启动的时候,换好IP重新启动网卡报错. device eth0 does not seem to be present.. ifconfig查 ...

  4. [ctsc2018] 混合果汁 【可持久化线段树】【二分答案】

    题目分析 首先考虑到最小值最大,二分答案.假设答案为k,显然这满足单调性.如果某个k使得这个情况下选不出.那么比k大的一定也选不出,所以二分答案. 接着我们可以贪心,当我们确认了k以后,一定会优先选费 ...

  5. poj2632 【模拟】

    In a modernized warehouse, robots are used to fetch the goods. Careful planning is needed to ensure ...

  6. Git分支合并

    大致描述一下 上次为了解决bug新建了一个bugfix分支,并提交了c5(这个1,2,3,4,5具体的可能和图片对应不太一样,但是结构一样),下面就该把bugfix与master进行整合,整合之后就可 ...

  7. 【AGC005F】Many Easy Problems (NTT)

    Description ​ 给你一棵\(~n~\)个点的树和一个整数\(~k~\).设为\(~S~\)为树上某些点的集合,定义\(~f(S)~\)为最小的包含\(~S~\)的联通子图的大小.\(~n~ ...

  8. 用树莓派改装电风扇及实现Android遥控

    最近天气很热,我租的房子又没有空调,基本上风扇一开就是一晚上,结果经常起床后发现口干舌燥的.我觉得这肯定是因为整晚吹风扇搞的,不管是不是,反正我觉得就是了.不开风扇吧,热!开风扇吧,早上起来不舒服,怎 ...

  9. C代码快速构建框架

    #include "stdio.h" typedef char int8_t; typedef short int16_t; typedef int int32_t; typede ...

  10. 青蛙跳台阶(C、Python)

    C语言: /* ----------------------------------- 当n = 1, 只有1中跳法:当n = 2时,有两种跳法:当n = 3 时,有3种跳法:当n = 4时,有5种跳 ...