根据欧拉函数的定义式可知,可以先算出a[l]*a[l+1]*...*a[r]的值,然后枚举所有存在的质因子*(p-1)/p。

发现这里区间中一个质因子只要计算一次,所以指计算“上一个同色点在区间外”的数。记录pre就是二维数点问题了,套路地用主席树即可。

被卡常。别的OJ过了BZOJ过不了,优化常数后别的OJ速度快一倍BZOJ还是过不了。

 #include<cstdio>
#include<algorithm>
#define rep(i,l,r) for (int i=(l); i<=(r); i++)
using namespace std; const int N=,M=,S=,mod=1e6+;
bool b[S];
int n,Q,mx,nd,l,r,tot,ans,idx[S],lst[S],rt[N],a[N],sm[N],p[S],v[M],ls[M],rs[M]; int ksm(int a,int b){
int res=;
for (; b; a=1ll*a*a%mod,b>>=)
if (b & ) res=1ll*res*a%mod;
return res;
} int inv(int x){ return ksm(x,mod-); } void init(int n){
rep(i,,n){
if (!b[i]) p[++tot]=i,idx[i]=tot;
for (int j=; j<=tot && p[j]*i<=n; j++){
b[p[j]*i]=;
if (i%p[j]==) break;
}
}
} void ins(int &x,int y,int L,int R,int pos,int k){
x=++nd; v[x]=v[y]; ls[x]=ls[y]; rs[x]=rs[y];
if (L==R){ v[x]=1ll*v[x]*(k-)%mod*inv(k)%mod; return; }
int mid=(L+R)>>;
if (pos<=mid) ins(ls[x],ls[y],L,mid,pos,k);
else ins(rs[x],rs[y],mid+,R,pos,k);
v[x]=1ll*v[ls[x]]*v[rs[x]]%mod;
} int que(int x,int y,int L,int R,int pos){
if (!x && !y) return ;
if (L==R) return 1ll*v[y]*inv(v[x])%mod;
int mid=(L+R)>>;
if (pos<=mid) return que(ls[x],ls[y],L,mid,pos);
else return 1ll*v[ls[y]]*inv(v[ls[x]])%mod*que(rs[x],rs[y],mid+,R,pos)%mod;
} int main(){
scanf("%d%d",&n,&Q); sm[]=; v[]=;
rep(i,,n) scanf("%d",&a[i]),sm[i]=1ll*sm[i-]*a[i]%mod,mx=max(mx,a[i]);
init(mx);
rep(i,,n){
rt[i]=rt[i-]; int t=a[i];
for (int j=; j<=tot && p[j]*p[j]<=t; j++)
if (t%p[j]==){
ins(rt[i],rt[i],,n,lst[j],p[j]); lst[j]=i;
while (t%p[j]==) t/=p[j];
}
if (t>) ins(rt[i],rt[i],,n,lst[idx[t]],t),lst[idx[t]]=i;
}
rep(i,,Q){
scanf("%d%d",&l,&r); l^=ans; r^=ans;
printf("%d\n",ans=(1ll*sm[r]*inv(sm[l-])%mod*que(rt[l-],rt[r],,n,l-)%mod));
}
return ;
}

最新文章

  1. useful Ansible commands
  2. C#使用正则表达式检测数字 char 和韩文
  3. [转]Delphi多线程编程入门(二)——通过调用API实现多线程
  4. 使用angular.js开发的一个简易todo demo
  5. Python入门二:函数
  6. TCP/IP 相关总结
  7. SharePoint 2010 安装简介及相关补丁下载
  8. c#中var关键字用法
  9. Unix中$$、$@、$#、$*的意思
  10. mysql经常使用的命令
  11. mac osx 10.9安装配置macvim
  12. applicationContext.xml的配置
  13. html5客户端本地存储之sessionStorage及storage事件
  14. cadcam
  15. VIM系统复制粘贴
  16. KMeans算法分析以及实现
  17. zhuan 常用图像数据集:标注、检索
  18. 【ElasticSearch】:Mapping相关
  19. LeetCode题解之Unique Paths II
  20. 深入hibernate的三种状态(转)

热门文章

  1. 【BZOJ】2165: 大楼
  2. 关于HttpWebRequest发生服务器协议冲突的解决办法
  3. maven使用过程中遇到的问题总汇
  4. CodeForces 990C
  5. JSTL标签库笔记
  6. Mutex, semaphore, spinlock的深度解析
  7. WebClient vs HttpClient vs HttpWebRequest
  8. C语言调用正则表达式
  9. IDEA 部署项目的时候出错:Jar not loaded错误
  10. webuploader插件使用分析