首先查看是否出现这篇帖子提到的问题
其次,乘法标记下传的时候要同时讲子节点的加法标记乘以同样的值
void pushdown(long long u){
sum[ls]=(sum[ls]*mul[u])%MOD;
sum[rs]=(sum[rs]*mul[u])%MOD;
mul[ls]=(mul[ls]*mul[u])%MOD;
mul[rs]=(mul[rs]*mul[u])%MOD;
add[ls]=(add[ls]*mul[u])%MOD;
add[rs]=(add[rs]*mul[u])%MOD;
sum[ls]=(sum[ls]+add[u]*len[ls])%MOD;
sum[rs]=(sum[rs]+add[u]*len[rs])%MOD;
add[ls]=(add[ls]+add[u])%MOD;
add[rs]=(add[rs]+add[u])%MOD;
add[u]=0;
mul[u]=1;
}