| 比赛 |
寒假集训4 |
评测结果 |
AAEEEEEEEE |
| 题目名称 |
数据结构题 |
最终得分 |
20 |
| 用户昵称 |
小福鑫 |
运行时间 |
1.730 s |
| 代码语言 |
C++ |
内存使用 |
3.46 MiB |
| 提交时间 |
2026-02-28 10:36:29 |
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
using namespace std;
int tree[100001],n,m,op,a[1000001],l,r,x,p;
int qpow(int a,int b,int p){
int ans=1;
a%=p;
while(b) {
if(b&1)ans=(ans%p)*(a%p)%p;
b/=2;
a=(a%p)*(a%p)%p;
}
ans%=p;
return ans;
}
int lowbit(int x){
return x&(-x);
}
void add(int x, int k){
while(x<=n){
tree[x]+=k;
x+=lowbit(x);
}
}
int query(int x){
int sum=0;
while(x>0){
sum+=tree[x];
x-=lowbit(x);
}
return sum;
}
signed main(){
freopen("sjjgt.in","r",stdin);
freopen("sjjgt.out","w",stdout);
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
add(i,a[i]-a[i-1]);
}
for(int i=1;i<=m;i++){
cin>>op;
if(op==1){
cin>>l>>r>>x;
add(l,x);
add(r+1,-x);
}
else{
cin>>l>>r>>p;
cout<<qpow(query(l),query(r),p)<<"\n";
}
}
}