题意:

给定长度为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 口算训练(质因子分解,二分)相关推荐

  1. HDU6287 口算训练(唯一分解定理+二分)

    口算训练 Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others) Total Sub ...

  2. hdu 6287 口算训练(二分+质因数分解+思维)

    口算训练 Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others) Total Sub ...

  3. python口算训练出题

    python口算训练出题 为了给妹妹出算数题,编了一个乘除法的出题代码,省去了许多时间 图片 obj=open(r"C:\Users\12483\Desktop\math.txt" ...

  4. 口算训练java_提高孩子口算能力的5大方法,超实用!(附练习,可打印)

    原标题:提高孩子口算能力的5大方法,超实用!(附练习,可打印) 来源: 网络 编辑:成长园(id:czy6688990) 小编提醒 关注成长园,后台回复"1201" 即可获取打印版 ...

  5. 2021年中国大学生程序设计竞赛 女生专场 - 热身赛 Problem C. 口算训练(质因子分解)

    题目分析:判断 xxx 是 yyy 的倍数,等价于质因子分解后, yyy 中的每个质因子的出现次数都小于等于其在 xxx 中的出现次数. 那么对于每次询问 [l,r,d][l,r,d][l,r,d], ...

  6. pyhton的tkinter制作简易口算训练器

    前言 最近参加实习投递,发现好多家企业不管是什么岗位(研发or职能)都会考验到大家的数学能力 例如宝洁笔试直接就上了口算题,限时是真的紧张. 楼主不仅编程能力垃圾,数学能力也从小没有得到很好的锻炼(键 ...

  7. HDU - 6287 口算训练 (质因子分解 + 二分)

    题意:给一个序列,问 [l, r] 连续区间的乘积能否被 d 整除 思路:用 vector 记录每个质因子在序列中出现的位置,upper_bound(vec[p].begin(), vec[p].en ...

  8. 口算训练-(2018-女生赛)(二分+唯一分解定理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6287 题意:给你n个数,每个数都很大; 有q次询问,让你判断一下从下标为: [L,R]的范围内 能否通 ...

  9. 用java编程100道问题//10弟弟的作业,口算训练

    弟弟的作业 题目描述 Rock的弟弟刚做完了"100以内数的加减法"这部分的作业,请你帮他检查一下.每道题目(包括弟弟的答案)的格式为a + b = c或者a – b = c,其中 ...

  10. CCPC2018女生赛口算训练6287

    #include <cstdio> #include <vector> #include <algorithm> #include <iostream> ...

最新文章

  1. viewholder
  2. Object C学习笔记22-#define 用法
  3. 基于MATLAB的车牌定位和识别
  4. 20应用统计考研复试要点(part36)--概率论与数理统计
  5. php中获取本月第二天,php第二天
  6. asp.net listview 字段太多 滚动条_人生有太多身不由己,回头看看最对不起的就是自己...
  7. 一个咸鱼的python_一个咸鱼的Python爬虫之路(三):爬取网页图片
  8. 微信Native支付申请接入流程-避免踩坑指南
  9. 【Unity3D日常开发】Unity3D中实现向Web服务器上传图片以及下载图片功能
  10. BRAF蛋白F595S G615R突变的影响
  11. 如何上架自己的应用到各大应用商店?
  12. Mysql 脚本创建触发器报错 1064 42000
  13. 将word文件中的文本转成字符串
  14. mysql 字符集 性能_MySQL字符集不一致导致性能下降25%,你敢信?
  15. 含泪整理最优质农用机器3dm Rhino犀牛资源素材,你想要的这里都有
  16. Dr.COM宽带认证客户端共享上网破解V3.46
  17. 输出1900至2000年(包含1900年和2000年)间的所有闰年
  18. 记录版本更新安装时解析包报错
  19. Linux 部分命令
  20. 大学计算机专业分流考试,信息科学与工程学院17级计算机类专业分流工作方案...

热门文章

  1. 多个图片合成PDF文件
  2. gopher协议利用
  3. python输出你好_python输出你好
  4. 单片机机器周期怎么计算公式_单片机机器周期的计算
  5. 计算机网络课程设计家庭网,家庭无线局域网的组建
  6. Codeforces 633H Fibonacci-ish II【线段树】
  7. . NET多线程编程
  8. QQ音乐解析API,支持搜索、歌单、单曲、专辑、MV解析、多音质切换
  9. php隐藏notice错误,php屏蔽notice错误
  10. ThingJS 和three.js对比开发太空漫游技术!3D 可视化