51 nod 1203 JZPLCM
第1行:两个整数,N, Q,中间用空格分隔,N为数列长度,Q为询问数量。(2 <= N, Q <= 50000)
第2 - N + 1行:每行1个整数,对应数列中的元素(1 <= S[i] <= 50000)
第N + 2 - N + Q + 1行:每行2个数,l, r,表示询问下标i在[l, r]范围内的S[i]的最小公倍数。(1 <= l <= r <= N)
输出共Q行,对应询问区间的最小公倍数Mod 10^9 + 7。
3 3
123
234
345
1 2
2 3
1 3
9594
26910
1103310 离线莫队,为了避免删数需要每次从当前块的终点跑到询问的左区间加数。
#include<cstdio>
#include<cstring>
#include<algorithm>
#define MN 50001
using namespace std;
int read_p,read_ca;
inline int read(){
read_p=;read_ca=getchar();
while(read_ca<''||read_ca>'') read_ca=getchar();
while(read_ca>=''&&read_ca<='') read_p=read_p*+read_ca-,read_ca=getchar();
return read_p;
}
const int MOD=1e9+;
const int K=;
struct na{
int l,r,k,p;
}Q[MN];
int n,m,A,p[MN],num=,bo[MN],_p[MN][],a[MN][],Nu[MN],l,r,mmh[MN],L,R,t[MN],_t[MN],MMH,_MMH;
inline bool cmp(na a,na b){return a.k==b.k?a.r<b.r:a.k<b.k;}
inline int mi(int a,int b){
int mmh=;
while (b){
if (b&) mmh=1LL*mmh*a%MOD;
b>>=;a=1LL*a*a%MOD;
}
return mmh;
}
inline void in(int x){for (register int i=;i<=Nu[x];i++) if (a[x][i]>t[_p[x][i]]) MMH=1LL*MMH*mi(p[_p[x][i]],a[x][i]-t[_p[x][i]])%MOD,t[_p[x][i]]=a[x][i];}
inline void work(int R,int x){
register int i,j;_MMH=MMH;
for (i=Q[x].l;i<=R;i++)
for (j=;j<=Nu[i];j++) if (a[i][j]>(_t[_p[i][j]]=_t[_p[i][j]]==?t[_p[i][j]]:_t[_p[i][j]])) _MMH=1LL*_MMH*mi(p[_p[i][j]],a[i][j]-_t[_p[i][j]])%MOD,_t[_p[i][j]]=a[i][j];
mmh[Q[x].p]=_MMH;
for (i=Q[x].l;i<=R;i++)
for (j=;j<=Nu[i];j++) _t[_p[i][j]]=;
}
int main(){
register int i,j;
for (i=;i<MN;i++){
if (!bo[i]) p[++num]=i,bo[i]=num;
for (j=;j<=num&&i*p[j]<MN;j++){
bo[i*p[j]]=j;
if (i%p[j]==) break;
}
}
n=read();m=read();
for (i=;i<=n;i++){
A=read();
while (A>){
if (bo[A]!=_p[i][Nu[i]]) _p[i][++Nu[i]]=bo[A];a[i][Nu[i]]++;A/=p[bo[A]];
}
}
for (i=;i<=m;i++)
Q[i].l=read(),Q[i].r=read(),Q[i].k=(Q[i].l-)/K,Q[i].p=i;
sort(Q+,Q++m,cmp);
r=;
for (i=;i<=(n-)/K;i++){
R=i*K+K;memset(t,,sizeof(t));MMH=;
while (Q[r].k==i&&r<=m){
if ((Q[r].r-)/K==i) work(Q[r].r,r);else{
while(R<=Q[r].r) in(R),R++;
work(i*K+K-,r);
}
r++;
}
}
for (i=;i<=m;i++) printf("%d\n",mmh[i]);
}
51 nod 1203 JZPLCM的更多相关文章
- 51 nod 1439 互质对(Moblus容斥)
1439 互质对 题目来源: CodeForces 基准时间限制:2 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 有n个数字,a[1],a[2],…,a[n].有一个集合,刚开 ...
- 51 nod 1495 中国好区间
1495 中国好区间 基准时间限制:0.7 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 阿尔法在玩一个游戏,阿尔法给出了一个长度为n的序列,他认为,一段好的区间,它的长度是& ...
- 51 nod 1427 文明 (并查集 + 树的直径)
1427 文明 题目来源: CodeForces 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 安德鲁在玩一个叫“文明”的游戏.大妈正在帮助他. 这个游 ...
- 51 nod 1055 最长等差数列(dp)
1055 最长等差数列 基准时间限制:2 秒 空间限制:262144 KB 分值: 80 难度:5级算法题 N个不同的正整数,找出由这些数组成的最长的等差数列. 例如:1 3 5 6 8 9 ...
- 51 nod 1421 最大MOD值
1421 最大MOD值 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 有一个a数组,里面有n个整数.现在要从中找到两个数字(可以 ...
- 51 nod 1681 公共祖先 (主席树+dfs序)
1681 公共祖先 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 有一个庞大的家族,共n人.已知这n个人的祖辈关系正好形成树形结构(即父亲向儿子连边). 在另 ...
- 51 nod 1766 树上的最远点对(线段树+lca)
1766 树上的最远点对 基准时间限制:3 秒 空间限制:524288 KB 分值: 80 难度:5级算法题 n个点被n-1条边连接成了一颗树,给出a~b和c~d两个区间,表示点的标号请你求出两个 ...
- 51 nod 1405 树的距离之和
1405 树的距离之和 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 给定一棵无根树,假设它有n个节点,节点编号从1到n, 求任意两点之间的距离(最短路径)之 ...
- 51 nod 1610 路径计数(Moblus+dp)
1610 路径计数 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 路径上所有边权的最大公约数定义为一条路径的值. 给定一个有向无环图.T次修改操作,每次修改一 ...
随机推荐
- iOS知识点、面试题 之二
最近面试,与大家分享一下,分三文给大家: 当然Xcode新版本区别,以及iOS新特性 Xcode8 和iOS 10 在之前文章有发过,感兴趣的可以查阅: http://www.cnblogs.com/ ...
- EL表达式隐式对象
用户输入界面 ---------------------------------------------------------------------------------------- < ...
- Confluence5.4.4迁移至6.3.1
1.数据备份 服务器查看: 2.安装破解文件及安装包至服务器 3.停止旧版本并启动安装 4.访问8090端口开始安装 5.获取授权码,需要能访问国外网站,并且有atlassian账号 6.将数据库连接 ...
- DEDECMS最新5.7版在Windows下的Memcache安装
一,织梦后台后台设置进入系统后台,在[系统基本参数]下面的"性能选项"卡当中,关于memcache进行如下配置: cfg_memcache_enable : 是否启用memcach ...
- MySQL index 增删改
一.前提信息 1.数据库版本 mysql> select version(),user(); +------------+----------------+ | version() | user ...
- 初识QT
前言:这是写给纯小白看的文章,大神可以自行绕道. QT的优势(摘自360百科): Qt支持下列操作系统: Microsoft Windows 95/98, Microsoft Windows NT, ...
- 我搞zabbix的那两天(2)
摘要:前一篇(我搞zabbix的那两天(1))我介绍了Zabbix的安装部署以及遇到的问题,这一篇将介绍zabbix 使用及短信等告警实现!!! Zabbix主界面及汉化方法介绍 1.1 初始化主界面 ...
- AJAX结合PHP整理复习
Ajax主要的功能是实现了浏览器端 异步 访问服务器:通过浏览器的XMLHttpRequest对象发出小部分数据,与服务端进行交互,服务端返回小部分数据,然后更新客户端的部分页面. 下图是一次请求成功 ...
- mysql 数据表字段修改sql 语句
1 新增字段 alter table bulletin add citycode varchar(6) not null default 0 [after `id`]; # 城市代码 2 修改字段 a ...
- Java核心技术(Java白皮书)卷Ⅰ 第一章 Java程序设计概述
第1章 Java程序设计概述1.1 Java程序设计平台 具有令人赏心悦目的语法和易于理解的语言,与其他许多优秀语言一样,Java满足这些要求. 可移植性 垃圾收集 提供大型的库 如果想要有奇特的绘 ...