社区讨论
样例全部输出0求助
P4588[TJOI2018] 数学计算参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mhji1rws
- 此快照首次捕获于
- 2025/11/04 02:54 4 个月前
- 此快照最后确认于
- 2025/11/04 02:54 4 个月前
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,q,M,tr[400005];
void build(int p,int l,int r){
if(l==r){
tr[l]=1;
}
else{
int mid=l+r>>1;
build(p<<1,l,mid);
build(p<<1|1,mid+1,r);
tr[p]=(tr[p<<1]*tr[p<<1|1])%M;
}
}
void update(int p,int l,int r,int cl,int cr,int d){
if(r<cl||cr<l)return;
if(cl<=l&&r<=cr){
tr[p]=d%M;
}
else{
int mid=l+r>>1;
update(p<<1,l,mid,cl,cr,d);
update(p<<1|1,mid+1,r,cl,cr,d);
tr[p]=(tr[p<<1]*tr[p<<1|1])%M;
}
}
signed main(){
int t;
scanf("%lld",&t);
while(t--){
scanf("%lld%lld",&q,&M);
build(1,1,q);
for(int i=1;i<=q;i++){
int opt,m;
scanf("%lld%lld",&opt,&m);
if(opt==1){
update(1,1,q,i,i,m);
}
else{
update(1,1,q,m,m,1);
}
printf("%lld\n",tr[1]%M);
}
}
return 0;
}
看了一下题解,我的代码和第二篇题解是比较像的,但样例全部输出0了。
回复
共 1 条回复,欢迎继续交流。
正在加载回复...