Блог пользователя RPdreamer

Автор RPdreamer, история, 4 часа назад, По-английски
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2E5+5,MOD=1LL<<32;struct tree{int l,r,sum,lcm;}t[N<<2];int a[N];int lcm(int x,int y){return x/__gcd(x,y)*y;}void pushup(int u){int l=u<<1,r=u<<1|1;t[u].sum=(t[l].sum+t[r].sum)%MOD;t[u].lcm=lcm(t[l].lcm,t[r].lcm);}void build(int u,int l,int r){t[u].l=l,t[u].r=r;if(l==r){t[u].sum=t[u].lcm=a[l];return;}int mid=(l+r)>>1;build(u<<1,l,mid);build(u<<1|1,mid+1,r);pushup(u);return;}void update(int u,int l,int r,int x){if(x%t[u].lcm==0)return;if(t[u].l==t[u].r){t[u].sum=t[u].lcm=__gcd(t[u].sum,x);return;}int mid=(t[u].l+t[u].r)>>1;if(l<=mid)update(u<<1,l,r,x);if(r>mid)update(u<<1|1,l,r,x);pushup(u);return;}int query(int u,int l,int r){if(l<=t[u].l&&t[u].r<=r)return t[u].sum;int mid=(t[u].l+t[u].r)>>1,ans=0;if(l<=mid)ans=(ans+query(u<<1,l,r))%MOD;if(r>mid)ans=(ans+query(u<<1|1,l,r))%MOD;return ans;}signed main(){int n,m,op,l,r,x;cin>>n>>m;for(int i=1;i<=n;++i)cin>>a[i];build(1,1,n);while(m--){cin>>op>>l>>r;if(op==1){cin>>x;update(1,l,r,x);}else{cout<<query(1,l,r)<<endl;}}return 0;}
  • Проголосовать: нравится
  • +6
  • Проголосовать: не нравится

»
4 часа назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

The reason of you being newbie isn't skill issue, but rather the judger dislikes your code for containing only 4 lines.

»
4 часа назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

dumb and ugly code.

noob.

»
4 часа назад, # |
  Проголосовать: нравится +2 Проголосовать: не нравится

It's unbelievable that this post gets 3 upvotes.