一直0分查了几小时
void padd(int i, int l, int r, ll k) {
if (Tr[i].l >= l && Tr[i].r <= r) {
Tr[i].plz %= M;Tr[i].plz += k;
Tr[i].plz %= M;
Tr[i].num %= M;Tr[i].num += k * (Tr[i].r - Tr[i].l + 1);
Tr[i].num %= M;
return;
}
if (Tr[i].l > r || Tr[i].r < l)return;
pushdown(i);//嗨,是我,你爹
if (Tr[i].l <= r)padd(i << 1, l, r, k);
if (Tr[i].r >= l)padd(i << 1 | 1, l, r, k);
Tr[i].num = (Tr[i << 1].num + Tr[i << 1 | 1].num) % M;
}