@[LYBT](/user/933604) 这样:
```cpp
inline void push_down(int k,int l,int r){
int mid=(l+r)>>1;
f[k*2]=(v2[k]*f[k*2]+v1[k]*(mid-l+1))%m;
f[k*2+1]=(v2[k]*f[k*2+1]+v1[k]*(r-mid))%m;
v2[k*2]=(v2[k*2]*v2[k])%m;
v2[k*2+1]=(v2[k*2+1]*v2[k])%m;
v1[k*2]=(v1[k*2]*v2[k]+v1[k])%m;
v1[k*2+1]=(v1[k*2+1]*v2[k]+v1[k])%m;
v2[k]=1;
v1[k]=0;
}
```
乘法标记下沉的时候要把儿子的加法标记也乘以下
by Skeleton_Huo @ 2023-08-13 11:30:09
@[Skeleton_Huo](/user/324632) 答案不太对呢,结果样例过不了
```cpp
inline void push_down(int k,int l,int r){
int mid=(l+r)>>1;
f[k*2]=(v2[k]*f[k*2]+v1[k]*(mid-l+1))%m;
f[k*2+1]=(v2[k]*f[k*2+1]+v1[k]*(r-mid))%m;
v2[k*2]=((v2[k*2]+v1[k*2])*v2[k])%m;
v2[k*2+1]=((v2[k*2+1]+v1[k*2+1])*v2[k])%m;
v1[k*2]=(v1[k*2]+v1[k])%m;
v1[k*2+1]=(v1[k*2+1]+v1[k])%m;
v2[k]=1;
v1[k]=0;
}
```
by LYBT @ 2023-08-13 21:50:52
@[LYBT](/user/933604) 但是我这边是能过样例的,甚至能AC
https://www.luogu.com.cn/record/120805433
by Skeleton_Huo @ 2023-08-14 14:04:06
@[LYBT](/user/933604) 你给的那段好像,下沉的有问题,v2[k*2]和v2[k*2+1]不用乘,但是v1要
by Skeleton_Huo @ 2023-08-14 14:06:58
@[Skeleton_Huo](/user/324632) 哦谢谢了,是我没理解对,一关,谢谢相助
by LYBT @ 2023-08-14 14:30:20