口算训练

Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Others)
Total Submission(s): 1968    Accepted Submission(s): 423

Problem Description

小Q非常喜欢数学,但是他的口算能力非常弱。因此他找到了小T,给了小T一个长度为n的正整数序列a1,a2,...,an,要求小T抛出m个问题以训练他的口算能力。

每个问题给出三个正整数l,r,d,小Q需要通过口算快速判断al×al+1×...×ar−1×ar是不是d的倍数。

小Q迅速地回答了出来,但是小T并不知道正确答案是什么,请写一个程序帮助小T计算这些问题的正确答案。

Input

第一行包含一个正整数T(1≤T≤10),表示测试数据的组数。

每组数据第一行包含两个正整数n,m(1≤n,m≤100000),分别表示序列长度以及问题个数。

第二行包含n个正整数a1,a2,...,an(1≤ai≤100000),表示序列中的每个数。

接下来m行,每行三个正整数l,r,d(1≤l≤r≤n,1≤d≤100000),表示每个问题。

Output

对于每个问题输出一行,若是倍数,输出Yes,否则输出No。

Sample Input

1 5 4 6 4 7 2 5 1 2 24 1 3 18 2 5 17 3 5 35

Sample Output

Yes No No Yes

Source

"字节跳动杯"2018中国大学生程序设计竞赛-女生专场

我也是看了题解才会做的,说到底还是数学太差了...

题意:很明显了...不多解释

思路:有很多样例,每组有m个数,n个要求的式子,r为左边界,l为右边界,r乘到l的值为需要求的数是否为其p倍数(好像讲的不是特别好...大概就是这样啦)

1.我们可以先把m个数分别对其求质因数,存入G[i]中,i为质因数,G[i]为下标。

2.再对p求质因数。

3.关键!!然后对询问的数分解质因式,对每一个分解得到的质因数,如果这个质因数的个数小于等于序列中该质因数的个数就可以整除,否则不能整除。这里用二分查找法查找在序列中质因数的个数。

好像讲的还是不太清楚...还是上代码吧!!

这个讲的挺好的,详见:https://blog.csdn.net/wjmwsgj/article/details/80519183

#include<iostream>
#include<algorithm>
#include<vector>
#include<stdio.h>
using namespace std;
vector<int>G[100001];
void fenjie(int id,int t)//求质因数
{for(int i=2;i*i<=t;i++){while(t%i==0){G[i].push_back(id);//加入到其尾部,G[x]含有质因数x的下标t=t/i;}}if(t>1)//注意!!{G[t].push_back(id);}
}
int main()
{int m,n,t,flag;int count;scanf("%d",&count);while(count--){scanf("%d%d",&m,&n);for(int i=0;i<100001;i++)清空容器{G[i].clear();}for(int i=0;i<m;i++)//求质因数{scanf("%d",&t);fenjie(i,t);}while(n--){int l,r,p;flag=1;scanf("%d%d%d",&l,&r,&p);l--;r--;for(int i=2;i*i<=p;i++)//对其求解质因数{int ans=0;while(p%i==0){ans++;p=p/i;}if(ans!=0){int sum=upper_bound(G[i].begin(),G[i].end(),r)-lower_bound(G[i].begin(),G[i].end(),l);//二分查找if(sum<ans){flag=0;break;}}}if(p>1)//注意!!{int sum=upper_bound(G[p].begin(),G[p].end(),r)-lower_bound(G[p].begin(),G[p].end(),l);//二分查找if(sum==0){flag=0;}}if(flag==0){printf("No\n");}else{printf("Yes\n");}}}return 0;
}

hdu 6287 口算训练(二分+质因数分解+思维)相关推荐

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

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

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

    口算训练 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. pyhton的tkinter制作简易口算训练器

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

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

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

  7. CCPC2018女生赛口算训练6287

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

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

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

  9. BZOJ5358: [Lydsy1805月赛]口算训练

    题解:判断d是否整除,可以转化为求这段区间内d的因子的指数是否均大于d中的指数.容易想到把每个数字都分解为素因子形式,对每个素数出现的次数求个前缀和即可.然而,这样时间空间都不行.注意到对于一个数x, ...

最新文章

  1. 极速发展的饿了么订单系统架构演进
  2. mysql 在存储过程出现的问题,记录一下
  3. SQLiteOpenHelper的实现
  4. 在哪个瞬间你感觉自己是一个产品经理?
  5. 『原创』+『参考』使用WMI在C#下获取U盘的永久不变的物理序列号
  6. 移植memtester到android平台
  7. 3 二分频verilog与Systemverilog编码
  8. PHP 照相 滤镜,PHP GIF / PNG True Colorize滤镜,可保留亮度和Alpha
  9. hb:一个简单的 http/web bench 工具
  10. Vue子组件调用父组件的方法
  11. git学习笔记-(6-提交对象)
  12. 计算机如何安装无线网络适配器,小编教你电脑无线网卡驱动怎么安装
  13. 15个android框架,Android常用的15个框架总结
  14. spark submit提交方式
  15. 赋值运算符的基本用法
  16. GB2312与utf16、utf8的汉字对照表
  17. python解题时间_1小时还是30秒?Python给你的另一种数据处理选择
  18. Cell Stem Cell | 杨东赫等建立全面的人类胚胎心脏多谱系发育图谱
  19. 解决安装ROS时出现的sudo rosdep init错误问题
  20. 微整理IDEA快捷键

热门文章

  1. DDoS防御的8种方针详解
  2. 二十一世纪“新元宇宙”奇科幻小说原创作品系列连载【第一部】第二回 登峰时刻
  3. 计算机存储容量1tb等于多少,1tb等于多少mb(1tb等于多少gb)
  4. git cherry-pick 多分支的代码库,将代码从一个分支转移到另一个分支
  5. android如何暂停倒计时,Android计时器和倒计时的实现(含开始,暂停,和复位)...
  6. iOS模拟器iOS Simulator详细图文使用教程
  7. 数据结构与算法(C语言版)----运动会管理系统
  8. 超详细的WMS仓储管理系统介绍——盘点篇
  9. IIS MIME设置
  10. Linux无法终止进程,如何在Linux中终止进程