博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[BZOJ5358]/[HDU6287]口算训练
阅读量:7174 次
发布时间:2019-06-29

本文共 848 字,大约阅读时间需要 2 分钟。

[BZOJ5358]/[HDU6287]口算训练

题目大意:

给定一个长度为\(n(n\le10^5)\)的正整数序列\(a_{1\sim n}\)\(m(m\le10^5)\)次询问。每次询问给出三个正整数\(l,r,d\),判断\(\displaystyle\prod_{i=l}^ra_i\)是不是\(d\)的倍数。

思路:

线性筛预处理出\(10^5\)内的所有素数。对于\(a\)中每一个数分解质因数,并开vector存储每个质因子出现的位置(如在同一个位置出现多次则算作多次)。对于每次询问的\(d\)分解质因数,对于每个质因子在vector中二分其在区间内出现的次数,判断是否比\(d\)中的多即可。

时间复杂度\(\mathcal O(n(\sqrt n+\log^2n))\)

源代码:

#include
#include
#include
#include
inline int getint() { register char ch; while(!isdigit(ch=getchar())); register int x=ch^'0'; while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0'); return x;}const int N=1e5+1,P=9593;int p[P],pos[N];bool vis[N];std::vector
v[P];inline void sieve() { vis[1]=true; for(register int i=2;i

转载于:https://www.cnblogs.com/skylee03/p/9118204.html

你可能感兴趣的文章
spring事务管理源码解析之@EnableTransactionManagement
查看>>
Spring AOP就是这么简单啦
查看>>
如何解决生产环境宕机问题
查看>>
阿里云弹性容器实例产品 ECI ——云原生时代的基础设施
查看>>
织梦程序和ZBLOG系统比较:哪个更加适合建设中小型网站?[图]
查看>>
当移动数据分析需求遇到Quick BI
查看>>
图解分布式系统架构演进之路
查看>>
JavaScript面向对象程序设计创建对象的方法分析
查看>>
程序员笔记|常见的Spring异常分析及处理
查看>>
Java基础:面向对象四大特征、五大原则
查看>>
JSP 生命周期
查看>>
量化交易系统开发:自动化(机器人或EA)交易的优点
查看>>
加拿大:监管机构呼吁加密行业参与证券法审查
查看>>
大数据技术综述
查看>>
MX4 Pro上实现一键锁屏
查看>>
ppt2010 滴管
查看>>
Learn Python The Hard Way(21)
查看>>
[读书笔记]Begining PHP5 and MySQL5 From Novoice to Professional
查看>>
OSChina 周五乱弹 ——做宇宙最低调的程序员.
查看>>
OSChina 周二乱弹 —— 请上车吧
查看>>