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\)的第\(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$ 的趣味题的更多相关文章
- luogu P1072 Hankson的趣味题
题目链接 luogu P1072 Hankson 的趣味题 题解 啊,还是noip的题好做 额,直接推式子就好了 \(gcd(x,a_0)=a_1=gcd(\frac{x}{a_1},\frac{a_ ...
- 【Luogu】P1072Hankson的趣味题(gcd)
这题真TM的趣味. 可以说我的动手能力还是不行,想到了算法却写不出来.以后说自己数论会GCD的时候只好虚了…… 我们首先这么想. x与a0的最大公约数为a1,那么我们把x/=a1,a0/=a1之后,x ...
- [NOIp2009] luogu P1072 Hankson 的趣味题
把 c 改成 d 下了两个点. 题目描述 已知正整数 a0,a1,b0,b1a_0,a_1,b_0,b_1a0,a1,b0,b1,设某未知正整数 xxx 满足: xxx 和 a0a_0a0 ...
- luogu 1072 Hankson 的趣味题 唯一分解定理+线性筛
貌似是比大多数题解优的 $O(n^2logn)$ ~ Code: #include <bits/stdc++.h> #define N 50004 #define setIO(s) fre ...
- 洛谷P1072 [NOIP2009] Hankson 的趣味题
P1072 Hankson 的趣味题 题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现在,刚刚放学回家的 Hankson 正在思考一 ...
- 算法训练 Hankson的趣味题
算法训练 Hankson的趣味题 时间限制:1.0s 内存限制:64.0MB 问题描述 Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫Han ...
- 1172 Hankson 的趣味题[数论]
1172 Hankson 的趣味题 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Descrip ...
- 1172 Hankson 的趣味题
1172 Hankson 的趣味题 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Descrip ...
- Codevs 1172 Hankson 的趣味题 2009年NOIP全国联赛提高组
1172 Hankson 的趣味题 2009年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description Hanks 博 ...
随机推荐
- 修改VCL源码实现自定义输入对话框
来自:https://yq.aliyun.com/wenji/88428 通过修改VCL源码实现自定义输入对话框 在BCB中有两个函数可以实现输入对话框:InputBox和InputQuery,其实I ...
- Dictionary字典
泛型,键值对 Dictionary<int,string> dic=new Dictionary<int,string>(); dic.Add(,"张三") ...
- 在 Ali Kubernetes 系统中,我们这样实践混沌工程
在传统的软件测试中,我们通常通过一个给定的条件来判断系统的反馈,通过断言来判断是否符合预期,测试条件和结果通常比较明确和固定.而混沌工程,是通过注入一些“不确定”因素,象放进了一群淘气的猴子,在系统资 ...
- BZOJ 3503 [CQOI2014]和谐矩阵
题目链接 BZOJ 3503 题解 没想到--直接用暴力的\(O((nm)^3)\)算法,居然能过?! 高斯消元解异或方程组. #include <cstdio> #include < ...
- pytesseract 使用框架
import pytesseract import cv2 img = cv2.imread("captcha.jpg",0) try: img.shape except Attr ...
- virtualenv 包管理
创建虚拟环境: 1) pip install virtualenv 2) virtualenv DemoEnv(虚拟环境名) 3) 此处windows和linux不同系统下的文件结构略有不同 lin ...
- WEB入门之十三 jQuery选择器
学习内容 jQuery层次选择器 jQuery属性选择器 jQuery表单选择器 jQuery过滤选择器 能力目标 熟悉jQuery各种选择器的使用场合 能熟练使用jQuery各种选择器 本章简介 上 ...
- CF710F String Set Queries
CF710F String Set Queries 支持字符串的插入和删除...SAM也干不了这个事 所以可以用cdq分治+AC自动机O(nlogn)解决 但是本题强制在线~~~ 我们还有一个工具,叫 ...
- C#反射类中所有字段,属性,方法
可能大家都知道在C#中如何创建一个类,但对于类的结构可能大家不一定了解的很清楚,对于我来说,我之前也搞的不是很明白,今天,当我没事研究反射的时候突然发现了着一点.我们来看类的结构到底是什么 publi ...
- linux下查找某文件关键字(grep 函数)
-e表示罗列出与关键字有关的行,“ABC”表示查找的关键字,/XXX/4.assoc.linear表示该路径下的文件 .assoc.linear