ccf 除法

来源:互联网 发布:淘宝中学生书包女韩版 编辑:程序博客网 时间:2024/05/22 06:58
#include<stdio.h>#include<iostream>#include<string.h>#define ll long longusing namespace std;ll num[100050];ll c[100050];ll n,m;ll lowbit(ll i){    return i&(-i);}void add(int i,ll val){    for(i; i<=n; i+=lowbit(i))    {        c[i]+=val;    }    return;}ll sum(ll i){    ll he=0;    for(i; i>0; i-=lowbit(i))    {        he+=c[i];    }    return he;}int main(){    memset(c,0,sizeof(c));    scanf("%lld%lld",&n,&m);    for(int i=1; i<=n; i++)    {        scanf("%lld",&num[i]);        add(i,num[i]);    }    ll k,x,y,t;    for(int i=0; i<m; i++)    {        scanf("%lld",&k);        if(k==1)        {            scanf("%lld%lld%lld",&x,&y,&t);            if(t==1)continue;            else            {                for(x; x<=y; x++)                {                    if(num[x]>=t&&num[x]%t==0)                    {                        //cout<<"++"<<endl;                        add(x,num[x]/t-num[x]);                        num[x]/=t;                    }                }            }        }        else if(k==2)        {            scanf("%lld%lld",&x,&y);            printf("%lld\n",sum(y)-sum(x-1));        }    }}

原创粉丝点击