比赛 NOIP模拟赛by mzx Day2 评测结果 C
题目名称 学姐的巧克力盒 最终得分 0
用户昵称 苏白水 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2016-10-20 21:59:36
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<queue>
priority_queue<int,vector<int>,less<int> >q;
using namespace std;
long long n,m,k,p1,p2;
long long a[1100000];
int mi(long long a,long long b)
{
	long long ans=1;
	int temp=b,s=a;
	while(temp!=0)
	{
		if(temp%2==1) ans=ans*s%p2;
		temp/=2;
		s=s*s%p2;
	}
	return ans;
}
int main()
{
	freopen("chocolatebox.in","r",stdin);
	freopen("chocolatebox.out","w",stdout);
	cin>>n>>m>>k>>p1>>p2;
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	for(int i=1;i<=m;i++)
	{
		long long ty,l,r,sum=1;
		cin>>ty>>l>>r;
		if(p1!=0)
		{
			if(ty==1)
			{
				for(int j=l;j<=r;j++)
					sum=(sum%p1)*(a[j]%p1)%p1;
				cout<<sum%p1<<endl;
			}
		}
		if(p2!=0)
		{
			if(ty==2)
			{
				for(int j=l;j<=r;j++)
					q.push(a[j]);
				long long num;
				num=mi(k,q.top());
				q.pop();
				for(int j=l+1;j<=r;j++)
				{
					num=mi(num,q.top());
					q.pop();
					if(q.size()==0) break;
				}
				cout<<num%p2<<endl;
			}
		}
	}
}