hdu6287 口算训练(质因子分解,二分)
题意:
给定长度为n的序列a,
q次询问,每次给出l,r,x,问a[l,r]的乘积是否是x的倍数
数据范围:1<=所有数据<=1e5
解法:
对于n个数质因子分解,开1e5个vector,设为g[],如果a(i)分解出了k个p,那么就向g[i]丢入k个i。
对于每组询问,质因子分解x,
对于x的每种质因子p,二分计算出[l,r]内的p数量,判断是否大于等于x中p的指数即可。
ps:
第一眼想用多颗线段树,但是1e5内质因子数量接近1e4,不知道能不能开下这么多棵树。
code:
#include<bits/stdc++.h>
using namespace std;
const int maxm=1e5+5;
int np[maxm];
int p[maxm],c;
vector<int>g[maxm];
int a[maxm];
int n,q;
void init(){for(int i=2;i<maxm;i++){if(!np[i]){p[c++]=i;}for(int j=0;j<c;j++){if(p[j]*i>maxm)break;np[p[j]*i]=1;if(i%p[j]==0)break;}}
}
signed main(){init();int T;scanf("%d",&T);while(T--){scanf("%d%d",&n,&q);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}for(int i=0;i<maxm;i++){g[i].clear();}for(int i=1;i<=n;i++){int x=a[i];for(int j=0;j<c&&p[j]*p[j]<=x;j++){if(x%p[j]==0){while(x%p[j]==0){x/=p[j];g[p[j]].push_back(i);}}}if(x!=1){g[x].push_back(i);}}while(q--){int l,r,x;scanf("%d%d%d",&l,&r,&x);int ok=1;for(int j=0;j<c&&p[j]*p[j]<=x;j++){if(x%p[j]==0){int cnt=0;while(x%p[j]==0){x/=p[j],cnt++;}auto right=upper_bound(g[p[j]].begin(),g[p[j]].end(),r);auto left=lower_bound(g[p[j]].begin(),g[p[j]].end(),l);if(right-left<cnt){ok=0;break;}}}if(x!=1&&ok){auto right=upper_bound(g[x].begin(),g[x].end(),r);auto left=lower_bound(g[x].begin(),g[x].end(),l);if(right-left<1){ok=0;}}if(ok)puts("Yes");else puts("No");}}return 0;
}
hdu6287 口算训练(质因子分解,二分)相关推荐
- HDU6287 口算训练(唯一分解定理+二分)
口算训练 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others) Total Sub ...
- hdu 6287 口算训练(二分+质因数分解+思维)
口算训练 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others) Total Sub ...
- python口算训练出题
python口算训练出题 为了给妹妹出算数题,编了一个乘除法的出题代码,省去了许多时间 图片 obj=open(r"C:\Users\12483\Desktop\math.txt" ...
- 口算训练java_提高孩子口算能力的5大方法,超实用!(附练习,可打印)
原标题:提高孩子口算能力的5大方法,超实用!(附练习,可打印) 来源: 网络 编辑:成长园(id:czy6688990) 小编提醒 关注成长园,后台回复"1201" 即可获取打印版 ...
- 2021年中国大学生程序设计竞赛 女生专场 - 热身赛 Problem C. 口算训练(质因子分解)
题目分析:判断 xxx 是 yyy 的倍数,等价于质因子分解后, yyy 中的每个质因子的出现次数都小于等于其在 xxx 中的出现次数. 那么对于每次询问 [l,r,d][l,r,d][l,r,d], ...
- pyhton的tkinter制作简易口算训练器
前言 最近参加实习投递,发现好多家企业不管是什么岗位(研发or职能)都会考验到大家的数学能力 例如宝洁笔试直接就上了口算题,限时是真的紧张. 楼主不仅编程能力垃圾,数学能力也从小没有得到很好的锻炼(键 ...
- HDU - 6287 口算训练 (质因子分解 + 二分)
题意:给一个序列,问 [l, r] 连续区间的乘积能否被 d 整除 思路:用 vector 记录每个质因子在序列中出现的位置,upper_bound(vec[p].begin(), vec[p].en ...
- 口算训练-(2018-女生赛)(二分+唯一分解定理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6287 题意:给你n个数,每个数都很大; 有q次询问,让你判断一下从下标为: [L,R]的范围内 能否通 ...
- 用java编程100道问题//10弟弟的作业,口算训练
弟弟的作业 题目描述 Rock的弟弟刚做完了"100以内数的加减法"这部分的作业,请你帮他检查一下.每道题目(包括弟弟的答案)的格式为a + b = c或者a – b = c,其中 ...
- CCPC2018女生赛口算训练6287
#include <cstdio> #include <vector> #include <algorithm> #include <iostream> ...
最新文章
- viewholder
- Object C学习笔记22-#define 用法
- 基于MATLAB的车牌定位和识别
- 20应用统计考研复试要点(part36)--概率论与数理统计
- php中获取本月第二天,php第二天
- asp.net listview 字段太多 滚动条_人生有太多身不由己,回头看看最对不起的就是自己...
- 一个咸鱼的python_一个咸鱼的Python爬虫之路(三):爬取网页图片
- 微信Native支付申请接入流程-避免踩坑指南
- 【Unity3D日常开发】Unity3D中实现向Web服务器上传图片以及下载图片功能
- BRAF蛋白F595S G615R突变的影响
- 如何上架自己的应用到各大应用商店?
- Mysql 脚本创建触发器报错 1064 42000
- 将word文件中的文本转成字符串
- mysql 字符集 性能_MySQL字符集不一致导致性能下降25%,你敢信?
- 含泪整理最优质农用机器3dm Rhino犀牛资源素材,你想要的这里都有
- Dr.COM宽带认证客户端共享上网破解V3.46
- 输出1900至2000年(包含1900年和2000年)间的所有闰年
- 记录版本更新安装时解析包报错
- Linux 部分命令
- 大学计算机专业分流考试,信息科学与工程学院17级计算机类专业分流工作方案...