@[xiaoyu1013](/user/556492) 似乎可能也许大概```now```不能做变量名
by _Adolf_Hitler_ @ 2023-08-19 13:52:51
在自己的电脑上编译成功了,在网上没找到答案
by xiaoyu1013 @ 2023-08-19 13:53:54
@[xiaoyu1013](/user/556492) 还有,你```inline```后再跟个```int```吧
by _Adolf_Hitler_ @ 2023-08-19 13:54:48
@[JODAN_POOLE](/user/931106) 不是
by siyuan_zhou @ 2023-08-19 13:55:07
@[xiaoyu1013](/user/556492) 你的 lson,rson 没有返回值类型
by 5t0_0r2 @ 2023-08-19 13:55:27
![](https://img1.imgtp.com/2023/08/19/up4tRvO1.png)
by siyuan_zhou @ 2023-08-19 13:58:20
我要比赛了,没空了
by siyuan_zhou @ 2023-08-19 13:59:19
可以编译了,谢谢大佬
by xiaoyu1013 @ 2023-08-19 14:05:16
```cpp
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
inline ll read()
{
char c = getchar();
ll ans = 0;
while(!isdigit(c))
c = getchar();
while(isdigit(c))
{
ans = ans * 10 + c - '0';
c = getchar();
}
return ans;
}
ll n,q,mod,x,y,z,ly;
struct Plant
{
ll value,add,mul;
} tree[100005 * 4];
ll a[100005];
inline int lson(ll sb)
{
return sb<< 1;
}
inline int rson(ll sb)
{
return sb << 1 | 1;
}
inline int add_down(ll sb,ll nl,ll nr)
{
ll mid = (nl + nr) >> 1;
tree[lson(sb)].value = (tree[lson(sb)].value + (mid - nl + 1) * tree[sb].add) % mod;
tree[rson(sb)].value = (tree[rson(sb)].value + (nr - mid) * tree[sb].add) % mod;
tree[lson(sb)].add = (tree[lson(sb)].add + tree[sb].add) % mod;
tree[rson(sb)].add = (tree[rson(sb)].add + tree[sb].add) % mod;
tree[sb].add = 0;
}
inline int mul_down(ll sb,ll nl,ll nr)
{
ll mid = (nl + nr) >> 1;
tree[lson(sb)].mul = (tree[lson(sb)].mul * tree[sb].mul) % mod;
tree[rson(sb)].mul = (tree[rson(sb)].mul * tree[sb].mul) % mod;
tree[lson(sb)].value = (tree[lson(sb)].value * tree[sb].mul) % mod;
tree[rson(sb)].value = (tree[rson(sb)].value * tree[sb].mul) % mod;
tree[lson(sb)].add = (tree[lson(sb)].add * tree[sb].mul) % mod;
tree[rson(sb)].add = (tree[rson(sb)].add * tree[sb].mul) % mod;
tree[sb].mul = 0;
}
inline void push_down(ll sb,ll nl,ll nr)
{
if(tree[sb].mul != 0)
mul_down(sb,nl,nr);
add_down(sb,nl,nr);
}
inline void push_up(ll sb)
{
tree[sb].value = (tree[lson(sb)].value + tree[rson(sb)].value) % mod;
}
void build(ll sb,ll nl,ll nr)
{
if(nl == nr)
{
tree[sb].value = a[nl];
return ;
}
ll mid = (nl + nr) >> 1;
build(lson(sb),nl,mid);
build(rson(sb),mid + 1,nr);
push_up(sb);
}
void add_update(ll sb,ll nl,ll nr,ll l,ll r,ll k)
{
if(nl > r || nr < l)
return ;
if(l <= nl && nr <= r)
{
tree[sb].value = (tree[sb].value + (nr - nl + 1) * k) % mod;
tree[sb].add = (tree[sb].add + k) % mod;
return ;
}
push_down(sb,nl,nr);
ll mid = (nl + nr) >> 1;
if(l <= mid)
add_update(lson(sb),nl,mid,l,r,k);
if(mid + 1 <= r)
add_update(rson(sb),mid + 1,nr,l,r,k);
push_up(sb);
}
void mul_update(ll sb,ll nl,ll nr,ll l, ll r,ll k)
{
if(nl > r ||l > nr)
return ;
if(l <= nl && nr <= r)
{
tree[sb].value = (tree[sb].value * k) % mod;
tree[sb].add = tree[sb].add * k % mod;
tree[sb].mul = tree[sb].mul * k % mod;
return ;
}
push_down(sb,nl,nr);
ll mid = (nl + nr) >> 1;
if(l <= mid)
mul_update(lson(sb),nl,mid,l,r,k);
if(mid + 1 <= r)
mul_update(rson(sb),mid + 1,nr,l,r,k);
push_up(sb);
}
ll quiry(ll sb,ll nl,ll nr,ll l,ll r )
{
if(nl > r || l > nr)
return 0;
if(l <= nl && nr <= r)
return tree[sb].value;
push_down(sb,nl,nr);
ll mid = (nl + nr) >> 1;
return (quiry(lson(sb),nl,mid,l,r) + quiry(rson(sb),mid + 1,nr,l,r)) % mod;
}
int main()
{
n = read();
q = read();
mod = read();
for(int i = 1; i <= n; i++)
{
a[i] = read();
}
build(1,1,n);
for(int i = 1; i <= q; i++)
{
ly = read();
if(ly == 1)
{
x = read();
y = read();
z = read();
mul_update(1,1,n,x,y,z);
}
if(ly == 2)
{
x = read();
y = read();
z = read();
add_update(1,1,n,x,y,z);
}
if(ly == 3)
{
x = read();
y = read();
printf("%lld\n",quiry(1,1,n,x,y));
}
}
return 0;
}
```
这个编译能过
by _Adolf_Hitler_ @ 2023-08-19 14:05:49