luogu 1072 Hankson 的趣味题 唯一分解定理+线性筛
貌似是比大多数题解优的 $O(n^2logn)$ ~
Code:
#include <bits/stdc++.h>
#define N 50004
#define setIO(s) freopen(s".in","r",stdin) , freopen(s".out","w",stdout)
using namespace std;
struct Node
{
int prime,p;
Node(int prime=0,int p=0):prime(prime),p(p){}
};
vector<Node>v;
int tot,re=0,a0,a1,b0,b1,h,cons;
int prime[N],vis[N];
void init()
{
int i,j;
for(i=2;i<N;++i)
{
if(!vis[i]) prime[++tot]=i;
for(j=1;j<=tot&&i*prime[j]<N;++j)
{
vis[i*prime[j]]=1;
if(i%prime[j]==0) break;
}
}
}
void dfs(int pos,int num)
{
int i,j;
for(i=1;i<=v[pos].p;++i)
{
num*=v[pos].prime;
if(__gcd(num*cons, a0)==a1)
{
++re;
}
for(j=pos+1;j<v.size();++j) dfs(j,num);
}
}
void solve()
{
int i,j;
scanf("%d%d%d%d",&a0,&a1,&b0,&b1),cons=b1,h=b0,re=0;
for(i=1;i<=tot&&h>=prime[i];++i)
{
if(h%prime[i]==0)
{
int cc=0,pp=cons;
for(;h%prime[i]==0;h/=prime[i]) ++cc,pp/=prime[i];
if(pp%prime[i]) // 可自由分配
{
v.push_back(Node(prime[i],cc));
for(;cons%prime[i]==0;cons/=prime[i]);
}
}
}
if(h!=1)
{
if((cons/h)%h)
v.push_back(Node(h,1)),cons/=h;
}
for(i=0;i<v.size();++i)
dfs(i,1);
v.clear();
printf("%d\n",re+(__gcd(cons,a0)==a1));
}
int main()
{
int T,i;
init();
// setIO("input");
scanf("%d",&T);
for(i=1;i<=T;++i) solve();
return 0;
}
luogu 1072 Hankson 的趣味题 唯一分解定理+线性筛的更多相关文章
- luogu P1072 Hankson的趣味题
题目链接 luogu P1072 Hankson 的趣味题 题解 啊,还是noip的题好做 额,直接推式子就好了 \(gcd(x,a_0)=a_1=gcd(\frac{x}{a_1},\frac{a_ ...
- NOIP2009Hankson 的趣味题[唯一分解定理|暴力]
题目描述 Hanks 博士是 BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson.现 在,刚刚放学回家的 Hankson 正在思考一个有趣的问题. 今天在课堂上,老师讲 ...
- 洛谷 1072 Hankson 的趣味题——质因数界限讨论
题目:https://www.luogu.org/problemnew/show/P1072 思路是把每个数质因数分解,答案对于每个质因数的次数有选择的区间,通过这个计算. 指数的限制就是上限是b1, ...
- 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 ...
- [NOIp2009] luogu P1072 Hankson 的趣味题
把 c 改成 d 下了两个点. 题目描述 已知正整数 a0,a1,b0,b1a_0,a_1,b_0,b_1a0,a1,b0,b1,设某未知正整数 xxx 满足: xxx 和 a0a_0a0 ...
- 算法训练 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 博 ...
随机推荐
- django form组件 cookies,session
django form组件 渲染标签 就是组件里面的字段在前端展示叫做渲染标签 校验数据 用户输入的数据提交给后端组件叫做校验数据 forms组件中定义的字段都是必须传值的(required=Tr ...
- kubernetes dashboard访问用户添加权限控制
前面我们在kubernetes dashboard 升级之路一文中成功的将Dashboard升级到最新版本了,增加了身份认证功能,之前为了方便增加了一个admin用户,然后授予了cluster-adm ...
- 18-Perl 错误处理
1.Perl 错误处理程序运行过程中,总会碰到各式各样的错误,比如打开一个不存在的文件.程序运行过程中如果出现错误就会停止,我们就需要使用一些检测方法来避免错误,从而防止程序退出.Perl 提供了多中 ...
- Python(八) —— 异常(概念、捕获、传递、抛出)
异常的概念 捕获异常 异常的传递 抛出异常 异常的概念 程序在运行时,如果 Python 解释器 遇到 到一个错误,会停止程序的执行,并且提示一些错误信息,这就是 异常 程序停止执行并且提示错误信息 ...
- sql当前时间往后半年
select DATEADD(MONTH, -6, GETDATE()) select DATEADD(hh, -6, GETDATE())
- 动画方案 Lottie 学习(一)之基础
参考 lottie系列文章(一):lottie介绍 lottie系列文章(二):lottie最佳实践 lottie系列文章(三):动画设计规范 lottie系列文章(四):源码分析——svg渲染
- CTF 常见操作总结
一般流程 首先看header, veiwsource, 目录扫描 有登陆, 尝试sql注入&爆破 有数据库, 必然sql注入? 普通sql注入 判断是否存在回显异常 尝试单双引号 查是字符型? ...
- Js的原型和原型链讲解
原型:每个对象都会在其内部初始化一个属性,就是prototype 原型链:当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去prototype中去找,这个prototype中会有 ...
- 快递100API
url:http://www.kuaidi100.com/query 拼接参数: 参数名称 参数取值 参数类型 type 快递码,请参考快递100码 String postid 快递单号 String ...
- U盘安装 CentOS7图解
参考 https://jingyan.baidu.com/article/e75aca856cca69142fdac673.html