| 比赛 | 
    20251022赛前模拟1 | 
    评测结果 | 
    WWWWTWTTWW | 
    | 题目名称 | 
    学姐的巧克力盒 | 
    最终得分 | 
    0 | 
    | 用户昵称 | 
    李奇文 | 
    运行时间 | 
    8.305 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    10.09 MiB  | 
    | 提交时间 | 
    2025-10-22 11:47:12 | 
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int n,m,k,p1,p2;
int a[N],f[N];
long long ans[N],res=1;
struct node{
	int l,r,id;
}q[N];
bool cmp(node x,node y){
	return (f[x.l]^f[y.l])?f[x.l]<f[y.l]:((f[x.l]&1)?x.r>y.r:x.r<y.r);
}
int main(){
	freopen("chocolatebox.in","r",stdin);
	freopen("chocolatebox.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n>>m>>k>>p1>>p2;
	if(p2==0){
		int len=sqrt(n);
		for(int i=1;i<=n;i++){
			cin>>a[i];
			f[i]=(i-1)/len+1;
		}
		for(int i=1;i<=m;i++){
			int opt;
			cin>>opt>>q[i].l>>q[i].r;
			q[i].id=i;
		}
		sort(q+1,q+1+m,cmp);
		int l=1,r=0;
		for(int i=1;i<=m;i++){
			int ll=q[i].l,rr=q[i].r;
			while(ll<l) res*=a[--l];
			while(rr>r) res*=a[++r];
			while(ll>l) res/=a[l++];
			while(rr<r) res/=a[r--];
			ans[q[i].id]=res%p1;
		}
		for(int i=1;i<=m;i++){
			cout<<ans[i]<<"\n";
		}
	}
	return 0;
}