```cpp
void pushdown(int k,int l,int r){
if(!tag[k]) return;
tag[ls]=(tag[ls]+tag[k])%p;
tag[rs]=(tag[rs]+tag[k])%p;
t[ls]=(t[ls]+1ll*tag[k]*(mid-l+1))%p;
t[rs]=(t[rs]+1ll*tag[k]*(r-mid))%p;
tag[k]=0;
}
```
线段树的down操作写错了,这么改就对了@[huoxj_runz](/user/154999)
by C锥 @ 2020-11-04 20:02:23
```cpp
void modify(int o, int l, int r, int k) {
(t[o].tag += k) %= mod;
t[o].sum = (t[o].sum + 1ll * (r - l + 1) * k % mod) % mod;
}
void down(int o, int l, int r) {
if(!t[o].tag) return ;
modify(ls(o), l, mid, t[o].tag);
modify(rs(o), mid + 1, r, t[o].tag); t[o].tag = 0;
}
```
我一般这么写,个人感觉不易错
by C锥 @ 2020-11-04 20:05:21
@[C锥](/user/93652) 感谢!!萌新受教了orz
by huoxj_runz @ 2020-11-04 22:02:48
此贴已结,不加1LL见祖宗
by huoxj_runz @ 2020-11-05 08:05:56