社区讨论

样例全部输出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 条回复,欢迎继续交流。

正在加载回复...