比赛 NOIP模拟赛by mzx Day2 评测结果 WWWWTTTTEE
题目名称 学姐的巧克力盒 最终得分 0
用户昵称 宋逸群 运行时间 8.873 s
代码语言 C++ 内存使用 38.47 MiB
提交时间 2016-10-20 21:36:21
显示代码纯文本
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<cstring>
  5. #include<cmath>
  6. #include<ctime>
  7. #include<algorithm>
  8. using namespace std;
  9. #define MAXN 1000100
  10. typedef long long ll;
  11. ll n,m,k,p1,p2,a[MAXN],tr[MAXN*4];
  12. inline ll read()
  13. {
  14. ll x=0,f=1; char ch=getchar();
  15. while(!isdigit(ch)) {if(ch=='-') f=-1; ch=getchar();}
  16. while(isdigit(ch)) {x=x*10+ch-'0'; ch=getchar();}
  17. return x*f;
  18. }
  19. void build(ll p,ll l,ll r)
  20. {
  21. if(l>r) return;
  22. if(l==r) {tr[p]=a[l]%p1; return;}
  23. ll mid=(l+r)/2;
  24. build(p*2,l,mid);
  25. build(p*2+1,mid+1,r);
  26. tr[p]=tr[p*2]*tr[p*2+1]%p1;
  27. }
  28. ll ask(ll p,ll l,ll r,ll x,ll y)
  29. {
  30. if(x>r||y<l) return 0;
  31. if(x<=l&&y>=r) return tr[p];
  32. ll mid=(l+r)/2;
  33. ll templ=ask(p*2,l,mid,x,y);
  34. ll tempr=ask(p*2+1,mid+1,r,x,y);
  35. return templ*tempr%p1;
  36. }
  37. int main()
  38. {
  39. freopen("chocolatebox.in","r",stdin);
  40. freopen("chocolatebox.out","w",stdout);
  41. n=read(); m=read(); k=read(); p1=read(); p2=read();
  42. for(ll i=1;i<=n;i++) a[i]=read();
  43. build(1,1,n);
  44. for(ll i=1;i<=m;i++)
  45. {
  46. ll flag=read(),x=read(),y=read();
  47. printf("%lld\n",ask(1,1,n,x,y));
  48. }
  49. return 0;
  50. }