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