hdu6287(分解质因数+二分)
题目链接:hdu6287
题意:给你n个数,和m个询问,每个询问有一个l和r和d,现在问你,从【l,r】区间的乘积是不是d的倍数。
思路:对于一个数k是不是d的倍数这类问题,我们可以对这两个数分解质因数,之后看看k的质因数和d的质因数之间的关系,如果满足对于d的每一个质因数个数,在k中都有出现过,且k的出现次数要大于等于d的出现次数,这个就是满足的。
代码:
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <queue>
#include <vector>
#include <cmath>
using namespace std;int main()
{ios::sync_with_stdio(false);int t;cin>>t;int n,m;while(t--){cin>>n>>m;int a[100010];for(int i=0; i<n; i++)cin>>a[i];vector<int>prime[100005];//将每个存在该质因数的对应下标存入质数数组内for(int i=0; i<n; i++){int k=sqrt(a[i]);for(int j=2; j<=k; j++)if(a[i]%j==0){while(a[i]%j==0)prime[j].push_back(i), a[i]/=j;}if(a[i]>1)prime[a[i]].push_back(i);}while(m--){int l,r,d;cin>>l>>r>>d;l--;r--;int flag=0;int k=sqrt((d));for(int i=2; i<=k; i++)if(d%i==0){int cnt=0;while(d%i==0)d/=i,cnt++;if(upper_bound(prime[i].begin(),prime[i].end(),r)-lower_bound(prime[i].begin(),prime[i].end(),l)<cnt){flag=1;break;}}if(d>1){int pos = upper_bound(prime[d].begin(), prime[d].end(),r) -lower_bound(prime[d].begin(), prime[d].end(),l);if(pos==0)flag=1;}if(flag)cout<<"No\n";elsecout<<"Yes\n";}}return 0;
}
hdu6287(分解质因数+二分)相关推荐
- C语言,分解质因数一个解法!_只愿与一人十指紧扣_新浪博客
题目内容: 每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数.比如,6可以被分解为2x3,而24可以被分解为2x2x2x3. 现在,你的程序要读入一个 ...
- 阶乘分解质因数[经典题组合数学枚举质因子]
引入问题: 给定整数NNN,试把阶乘 N!N!N! 分解质因数,按照算术基本定理的形式输出分解结果中的 pip_ipi 和 cic_ici即可. N!N!N!分解质因数后的结果,共若干行,每行一对 ...
- 【数学专题】 筛质数、分解质因数和快速幂
筛质数 质数筛法分为埃氏筛和线性筛. 埃氏筛没有线性筛时间复杂度好,不常用,但是他的时间复杂度分析方法却比较常用. 埃氏筛的时间复杂度为O(nloglogn)≈O(n)O(nloglogn)≈O(n) ...
- 【c语言】分解质因数
将一个正整数N(1<N<32768)分解质因数.例如,输入90,打印出90=233*5. 样例输入 66 样例输出 66=2311 #include <stdio.h> int ...
- java求最大公约数(分解质因数)
下面是四种用java语言编程实现的求最大公约数的方法: package gcd;import java.util.ArrayList; import java.util.List;public cla ...
- 负数分解质因数java_Java经典案例之-“分解质因数”
/** * 描述:将一个正整数分解质因数.例如:输入90,打印出90=2*3*3*5. * 分析: * 对n进行分解质因数,应该先找到一个最小的质数k,然后按照下列步骤进行: * (1)如果这个质数恰 ...
- python【蓝桥杯vip练习题库】ADV-359分解质因数
试题 算法提高 分解质因数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个正整数n,尝试对其分解质因数 输入格式 仅一行,一个正整数,表示待分解的质因数 输出格式 仅一行, ...
- python【蓝桥杯vip练习题库】BASIC-16分解质因数(数论 质数分解)
试题 基础练习 分解质因数 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 求出区间[a,b]中所有整数的质因数分解. 输入格式 输入两个整数a,b. 输出格式 每行输出一个数的分解 ...
- 求助matlab分解质因数,Matlab
Since Apr.6th,2016 linspace:产生一系列整数.linspace(a, b, c)产生的数 x 范围为 a≤x≤b ,总数为 c . 注意和 a:b:c的区别,a:b:c中 c ...
- C语言经典例14-将一个正整数分解质因数
目录 1 题目 2 分析 3 实现 4 运行结果 1 题目 将一个正整数分解质因数.例如:输入909090,打印出 90=2∗3∗3∗590 = 2 * 3 * 3 * 590=2∗3∗3∗5 2 分 ...
最新文章
- 聊城中考计算机试题及答案,初中微机模拟考试试题(word版).doc
- linux i2c 读写函数,Linux下读写芯片的I2C寄存器
- mysql安装sphinx引擎
- Java读取Excel文件并将之写入数据库操作
- 学生使用计算机中怎么关机,学会正确开关机初中计算机教案
- 泛型字典 0104 c#
- [洪流学堂]Hololens开发入门篇1之模拟器开发环境配置
- [python基础] 浮点数乘法的误差问题
- 赚钱有捷径吗?为什么有的人赚钱很容易
- python安装包的方法与图解_Python包的几种安装方法,方式
- MAC编译freetype
- BREDR之inquiry及page
- 在使用计算机时可以用什么键关机,计算机快捷键怎么用(按什么),关机、睡眠等?...
- 太突然!著名音乐人陈道明去世,死因曝光,刺痛全网……
- [Pyecharts]数据可视化 大屏展示
- Python聊天室设置与实现
- 开拓者终变落荒者,火箭大胜进第二轮
- labuladong算法小抄中图算法的学习笔记(c++版)
- BTC反弹上攻失效 回踩重点关11000
- 作为普通人,咱呐,活着就好!