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