比赛 |
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;
}