对于质因数分解理解还不到位。

此题可知$lcm$是$x$的倍数,$x$是$lcm$的约数,只要在$lcm$的分解质因数里对每一个质因子讨论种数即可。

具体来说,对于$lcm$的一个质因子$p$,讨论$a,b,c,d(也就是lcm)$关于$p$的幂次,然后比较大小,分类讨论得出种数。

实现上来看,只要在枚举$lcm$质因子过程中,一带把$a,b,c,d$全部除去这个因子,再比较幂次。

一些细节:

  • 一定要保证$b|d$,不解释。
  • 可能$a$包含$lcm$没有的质因子,但不影响讨论。
  • 枚举$1 \sim \sqrt{lcm}$来找$lcm$质因子,通过优化,只枚举$1 \sim \sqrt{lcm}$内质数(可预处理)可以降低复杂度。
  • 注意最后讨论有没有剩下的一个超过$\sqrt{lcm}$的质因子。
 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define dbg(x) cerr << #x << " = " << x <<endl
using namespace std;
typedef long long ll;
typedef double db;
typedef pair<int,int> pii;
template<typename T>inline T _min(T A,T B){return A<B?A:B;}
template<typename T>inline T _max(T A,T B){return A>B?A:B;}
template<typename T>inline char MIN(T&A,T B){return A>B?(A=B,):;}
template<typename T>inline char MAX(T&A,T B){return A<B?(A=B,):;}
template<typename T>inline void _swap(T&A,T&B){A^=B^=A^=B;}
template<typename T>inline T read(T&x){
x=;int f=;char c;while(!isdigit(c=getchar()))if(c=='-')f=;
while(isdigit(c))x=x*+(c&),c=getchar();return f?x=-x:x;
}
const int N=;
int prime[N],inshi[N+],n;
ll ans=;
int T,a,b,c,d,t1,t2,t3,t4,fl;
inline void preprocess(){
for(register int i=;i<=N;++i){
if(!inshi[i])prime[++n]=i;
for(register int j=;j<=n&&prime[j]<=N/i;++j){
inshi[i*prime[j]]=prime[j];
if(inshi[i]==prime[j])break;
}
}
} int main(){//freopen("son10.in","r",stdin);freopen("test.out","w",stdout);
preprocess();
read(T);while(T--){
read(a),read(b),read(c),read(d);
if(d%b){puts("");continue;}
ans=,fl=;
for(register int i=;prime[i]*prime[i]<=d;++i)if(d%prime[i]==){
t1=t2=t3=t4=;
while(d%prime[i]==)d/=prime[i],++t4;
while(c%prime[i]==)c/=prime[i],++t3;
while(b%prime[i]==)b/=prime[i],++t2;
while(a%prime[i]==)a/=prime[i],++t1;
if(t1==t2&&t3==t4&&t2<=t3)ans*=(t3-t2+);
else if(!(t1==t2&&t3<t4&&t2<=t4)&&!(t3==t4&&t1>t2&&t2<=t4)&&!(t1>t2&&t3<t4&&t2==t4)){fl=;break;}
}
if(!fl&&d^){
t4=,t3=c^?:,t2=b^?:,t1=a%d==?:;
if(t1==t2&&t3==t4&&t2<=t3)ans*=(t3-t2+);
else if(!(t1==t2&&t3<t4&&t2<=t4)&&!(t3==t4&&t1>t2&&t2<=t4)&&!(t1>t2&&t3<t4&&t2==t4))fl=;
}
if(fl)puts("");
else printf("%d\n",ans);
}
return ;
}

loj2589 「NOIP2009」Hankson 的趣味题的更多相关文章

  1. 「NOIP2009」Hankson 的趣味题

    Hankson 的趣味题 [内存限制:$128 MiB$][时间限制:$1000 ms$] [标准输入输出][题目类型:传统][评测方式:文本比较] 题目描述 Hanks 博士是 BT(Bio-Tec ...

  2. 「NOIP2009」Hankson的趣味题

    题目描述 (由于本题是数论题,所以我只把题目大意说一下...) 输入时给定\(a_0,a_1,b_0,b_1\),题目要求你求出满足如下条件的\(x\)的个数: \[\begin{cases}\gcd ...

  3. 【NOIP2009】Hankson 的趣味题

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

  4. NOIP2009 T2 Hankson的趣味题

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

  5. 【NOIP2009】Hankson的趣味题

    题意:给出 \(a_0\), \(a_1\), \(b_0\), \(b_1\), 求出正整数 \(x\) 的个数,\(x\) 满足: \(gcd(x,a_0)=a_1\) , \(lcm(x, b_ ...

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

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

  7. CH3201 Hankson的趣味题

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

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

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

  9. 1626:【例 2】Hankson 的趣味题

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

随机推荐

  1. group_by和having的用法

    #encoding: utf-8 from sqlalchemy import create_engine,Column,Integer,String,Float,func,and_,or_,Enum ...

  2. PTA(Advanced Level)1036.Boys vs Girls

    This time you are asked to tell the difference between the lowest grade of all the male students and ...

  3. Hanlp配置自定义词典遇到的问题与解决方法

    本文是整理了部分网友在配置hanlp自定义词典时遇到的一小部分问题,同时针对这些问题,也提供另一些解决的方案以及思路.这里分享给大家学习参考. 要使用hanlp加载自定义词典可以通过修改配置文件han ...

  4. Centos7 更换为网易YUM源

    当我们刚刚安装系统的时候 yum 的速度那是真滴慢所以我们就需要一个更加快速的镜像,这时候网易镜像带给我们便捷.下面来一起更换吧! 备份当前的 yum 源 # yum 源在目录 /etc/yum.re ...

  5. 从入门到自闭之Python序列化

    序列化(背) json :将数据类型转换成字符串(序列化),将字符串装换成原数据类型(反序列),支持dict,list,tuple等,序列后都变成了列表 dumps,loads ------ 用于网络 ...

  6. Visual Studio (VC) Win32 程序由于数据大,内存溢出怎么办?

    Visual Studio (VC) 内编写的Win32 程序由于数据大,内存溢出,即使转移到64位系统也不行.在国外网站上找到了答案. 原来,只需在project->property中的Lin ...

  7. mybatis的if

    <select id="findList" resultType="BndExport"> SELECT <include refid=&qu ...

  8. Linux6上安装MySQL

    MySQL安装包下载:https://www.mysql.com/downloads/ 然后选择: 把下载好的安装包传到服务器上的指定目录,然后解压: [root@master mysql]# tar ...

  9. 从FBV到CBV一(开始)

    span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }.CodeMirror ...

  10. CDH中Oozie无法卸载

    问题:HUE依赖Oozie 所以Oozie不能够卸载,好坑啊    解决思路: 重新装回来,但是不启动Oozie,节约一部分性能.