暴力 O2 91pts 求调

P3987 我永远喜欢珂朵莉~

@[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


|