试问有谁能把此70pts马蜂水过?(悬赏一关)
查看原帖
试问有谁能把此70pts马蜂水过?(悬赏一关)
665933
__LZH__楼主2023/7/10 15:37
#include<bits/stdc++.h>
using namespace std;
long long n,t,m,op,x,y,k,a[200010];
void build1(long long x,long long y,long long k){
	for(long long i=x;i<=y;i++){
		a[i]*=k;
		a[i]%=m;
	}
}
void build2(long long x,long long y,long long k){
	for(long long i=x;i<=y;i++){
		a[i]+=k;
		a[i]%=m;
	}
}
long long change(long long x,long long y){
	long long sum=0;
	for(long long i=y;i>=x;i--){
		sum+=a[i];
		sum%=m;	
	}
	sum%=m;
	return sum;
}
int main(){
	cin>>n>>t>>m;
	for(long long i=1;i<=n;i++){
		cin>>a[i];
	}
	while(t--){
		cin>>op>>x>>y;
		if(op==1){
			cin>>k;
			build1(x,y,k);
		}else if(op==2){
			cin>>k;
			build2(x,y,k);
		}else{
			cout<<change(x,y)<<"\n";
		}
	}
	return 0;
}
2023/7/10 15:37
加载中...