@[YXD123456789](/user/545310)
```cpp
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,m,op,a[100001];
char buf[1<<15],*p1=buf,*p2=buf;
#define nc() (p1==p2&&(p2=buf+fread(p1=buf,1,1<<15,stdin),p1==p2)?-1:*p1++)
inline int rd()
{
int x=0;char c=nc();
for(;!isdigit(c);c=nc());
for(; isdigit(c);c=nc()) x=(x<<3)+(x<<1)+(c^48);
return x;
}
inline void write(ll x)
{
if(x > 9) write(x / 10);
putchar(x % 10 + '0');
}
signed main()
{
n=rd(),m=rd();
for(register int i=1;i<=n;i=-(~i)) a[i]=rd();
for(register int i=1;i<=m;i=-(~i))
{
op=rd();
if(op&1)
{
int x=rd(),y=rd(),z=rd();
if(z==1) continue;
if(z==2)
{
register int i=x;
for(;i+8<=y;i+=8)
{
a[i]=a[i]&1?a[i]:a[i]>>1;
a[i+1]=a[i+1]&1?a[i+1]:a[i+1]>>1;
a[i+2]=a[i+2]&1?a[i+2]:a[i+2]>>1;
a[i+3]=a[i+3]&1?a[i+3]:a[i+3]>>1;
a[i+4]=a[i+4]&1?a[i+4]:a[i+4]>>1;
a[i+5]=a[i+5]&1?a[i+5]:a[i+5]>>1;
a[i+6]=a[i+6]&1?a[i+6]:a[i+6]>>1;
a[i+7]=a[i+7]&1?a[i+7]:a[i+7]>>1;
}
for(;i<=y;i=-(~i)) a[i]=a[i]&1?a[i]:a[i]>>1;
}
else
{
register int i=x;
for(;i+8<=y;i+=8)
{
a[i]=a[i]%z==0?a[i]/z:a[i];
a[i+1]=a[i+1]%z==0?a[i+1]/z:a[i+1];
a[i+2]=a[i+2]%z==0?a[i+2]/z:a[i+2];
a[i+3]=a[i+3]%z==0?a[i+3]/z:a[i+3];
a[i+4]=a[i+4]%z==0?a[i+4]/z:a[i+4];
a[i+5]=a[i+5]%z==0?a[i+5]/z:a[i+5];
a[i+6]=a[i+6]%z==0?a[i+6]/z:a[i+6];
a[i+7]=a[i+7]%z==0?a[i+7]/z:a[i+7];
}
for(;i<=y;i=-(~i)) a[i]=a[i]%z==0?a[i]/z:a[i];
}
}
else
{
ll sum=0;int x=rd(),y=rd();
register int i=x;
for(;i+8<=y;i+=8)
{
sum+=a[i];
sum+=a[i+1];
sum+=a[i+2];
sum+=a[i+3];
sum+=a[i+4];
sum+=a[i+5];
sum+=a[i+6];
sum+=a[i+7];
}
for(;i<=y;i=-(~i)) sum+=a[i];
write(sum),putchar('\n');
}
}
return 0;
}
```
by spider_oyster @ 2023-09-24 21:17:21
@[spider_oyster](/user/501028) 感谢dalao
by YXD123456789 @ 2023-09-25 19:56:34