HDU - 6287 口算训练
口算训练
Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others)
Total Submission(s): 1411 Accepted Submission(s): 285
每个问题给出三个正整数l,r,d,小Q需要通过口算快速判断al×al+1×...×ar−1×ar是不是d的倍数。
小Q迅速地回答了出来,但是小T并不知道正确答案是什么,请写一个程序帮助小T计算这些问题的正确答案。
每组数据第一行包含两个正整数n,m(1≤n,m≤100000),分别表示序列长度以及问题个数。
第二行包含n个正整数a1,a2,...,an(1≤ai≤100000),表示序列中的每个数。
接下来m行,每行三个正整数l,r,d(1≤l≤r≤n,1≤d≤100000),表示每个问题。
将所给序列分解质因式,用vector将每个质因数在序列中的位置保存下来,如序列2,4,5。G[2] = {0,1,1},G[5] = {2}。G[2]即表示2在序列中出现的位置为下标0,1,1,其中在1位置出现了2次。然后对询问的数分解质因式,对每一个分解得到的质因数,如果这个质因数的个数小于等于序列中该质因数的个数就可以整除,否则不能整除。这里用二分查找法查找在序列中质因数的个数。
#include <bits/stdc++.h>
using namespace std;const int maxn = 1e5 + 5;
vector<int>G[maxn];
int n,m,t;void p(int x,int id)
{for(int i = 2;i * i <= x;i++){while(x % i == 0){G[i].push_back(id);x /= i;}}if(x > 1){G[x].push_back(id);}
}int main()
{scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);int x;for(int i = 0 ; i < maxn ; i++) G[i].clear();for(int i = 0;i < n;i++){scanf("%d",&x);p(x,i);}int l,r,d;for(int i = 0;i < m;i++){int flag = 1;scanf("%d%d%d",&l,&r,&d);l--,r--;for(int j = 2;j * j <= d;j++){int cnt = 0;while(d % j == 0){cnt++;d /= j;}if(cnt){int pos = upper_bound(G[j].begin(),G[j].end(),r) - lower_bound(G[j].begin(),G[j].end(),l);if(pos < cnt){flag = 0;break;}}}if(d > 1){int pos = upper_bound(G[d].begin(),G[d].end(),r) - lower_bound(G[d].begin(),G[d].end(),l);if(!pos){flag = 0;}}if(flag){printf("Yes\n");}else{printf("No\n");}}}return 0;
}
HDU - 6287 口算训练相关推荐
- hdu 6287 口算训练(二分+质因数分解+思维)
口算训练 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others) Total Sub ...
- HDU - 6287 口算训练 (质因子分解 + 二分)
题意:给一个序列,问 [l, r] 连续区间的乘积能否被 d 整除 思路:用 vector 记录每个质因子在序列中出现的位置,upper_bound(vec[p].begin(), vec[p].en ...
- python口算训练出题
python口算训练出题 为了给妹妹出算数题,编了一个乘除法的出题代码,省去了许多时间 图片 obj=open(r"C:\Users\12483\Desktop\math.txt" ...
- HDU6287 口算训练(唯一分解定理+二分)
口算训练 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others) Total Sub ...
- 口算训练java_提高孩子口算能力的5大方法,超实用!(附练习,可打印)
原标题:提高孩子口算能力的5大方法,超实用!(附练习,可打印) 来源: 网络 编辑:成长园(id:czy6688990) 小编提醒 关注成长园,后台回复"1201" 即可获取打印版 ...
- pyhton的tkinter制作简易口算训练器
前言 最近参加实习投递,发现好多家企业不管是什么岗位(研发or职能)都会考验到大家的数学能力 例如宝洁笔试直接就上了口算题,限时是真的紧张. 楼主不仅编程能力垃圾,数学能力也从小没有得到很好的锻炼(键 ...
- CCPC2018女生赛口算训练6287
#include <cstdio> #include <vector> #include <algorithm> #include <iostream> ...
- 口算训练-(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,其中 ...
- 2021年中国大学生程序设计竞赛 女生专场 - 热身赛 Problem C. 口算训练(质因子分解)
题目分析:判断 xxx 是 yyy 的倍数,等价于质因子分解后, yyy 中的每个质因子的出现次数都小于等于其在 xxx 中的出现次数. 那么对于每次询问 [l,r,d][l,r,d][l,r,d], ...
最新文章
- ORACLE空值漫谈2
- python查询sqlserver视图_如题:sqlserver连接Oracle数据库,在sql查询分析器中查询oracle中的视图,根据时间字段查询,SQL语句...
- xshell如何登陆数据库_Xshell连接远程服务器和操作数据库
- 腾讯TBS X5 WebView的简单使用
- Zend Server更新至6.2版本——虚拟主机全方位管理
- 【蓝桥杯官网试题 - 历届试题】格子刷油漆(dp)
- ASP无组件上传带进度条
- java 寻找峰值峰谷_寻找峰值
- html提交表单给php邮件发送,在HTML表单中通过PHP自动发送电子邮件
- es6 原生构造函数的继承
- 计算机二级晓云是企业人力,全国计算机二级Ms-Office精选真题试卷
- mediacodec延时_FFmpeg优化点播延时方案
- LCA--最近公共祖先
- 单片机 架构 程序 经验总结_收藏!牛人总结的单片机应用程序架构
- /usr/bin/sed: No such file or directory
- linux服务器运行dyna,dynamips分布式实现详解
- java递归求和_java递归算法求和有哪些方式实现?
- php格林威治时间,PHP默认时间是格林威治时间。
- 【408】计算机组成原理第一轮强化笔记
- 使用JavaFX完成刽子手游戏