比赛 |
NOIP模拟赛by mzx Day2 |
评测结果 |
WWWWTTTTEE |
题目名称 |
学姐的巧克力盒 |
最终得分 |
0 |
用户昵称 |
宋逸群 |
运行时间 |
8.873 s |
代码语言 |
C++ |
内存使用 |
38.47 MiB |
提交时间 |
2016-10-20 21:36:21 |
显示代码纯文本
- #include<iostream>
- #include<cstdio>
- #include<cstdlib>
- #include<cstring>
- #include<cmath>
- #include<ctime>
- #include<algorithm>
- using namespace std;
- #define MAXN 1000100
- typedef long long ll;
- ll n,m,k,p1,p2,a[MAXN],tr[MAXN*4];
- inline ll read()
- {
- ll x=0,f=1; char ch=getchar();
- while(!isdigit(ch)) {if(ch=='-') f=-1; ch=getchar();}
- while(isdigit(ch)) {x=x*10+ch-'0'; ch=getchar();}
- return x*f;
- }
- void build(ll p,ll l,ll r)
- {
- if(l>r) return;
- if(l==r) {tr[p]=a[l]%p1; return;}
- ll mid=(l+r)/2;
- build(p*2,l,mid);
- build(p*2+1,mid+1,r);
- tr[p]=tr[p*2]*tr[p*2+1]%p1;
- }
- ll ask(ll p,ll l,ll r,ll x,ll y)
- {
- if(x>r||y<l) return 0;
- if(x<=l&&y>=r) return tr[p];
- ll mid=(l+r)/2;
- ll templ=ask(p*2,l,mid,x,y);
- ll tempr=ask(p*2+1,mid+1,r,x,y);
- return templ*tempr%p1;
- }
- int main()
- {
- freopen("chocolatebox.in","r",stdin);
- freopen("chocolatebox.out","w",stdout);
- n=read(); m=read(); k=read(); p1=read(); p2=read();
- for(ll i=1;i<=n;i++) a[i]=read();
- build(1,1,n);
- for(ll i=1;i<=m;i++)
- {
- ll flag=read(),x=read(),y=read();
- printf("%lld\n",ask(1,1,n,x,y));
- }
- return 0;
- }