大二带专生


私信TA

用户名:dotcpp0676254

访问量:549

签 名:

等  级
排  名 9265
经  验 1168
参赛次数 0
文章发表 18
年  龄 0
在职情况 学生
学  校 职业技术学院
专  业

  自我简介:

解题思路:利用二进制取反和与操作找到最右边1的位置,然后减掉,后面在以此类推

注意事项:

参考代码:

#include<iostream>

using namespace std;

int lowbit(int x)

{

    return x & (~x + 1);

}

int sum(int l,int r)

{

    int res=0;

    for(int i=l;i<=r;i++)

    {

        int temp=i;

        while(temp)

        {

            temp-=lowbit(temp);

            res++;

        }

    }

    return res;

}

int main()

{

    int l,r;

    cin>>l>>r;

    cout <<sum(l,r) << endl;


    return 0;

}


 

0.0分

0 人评分

  评论区

  • «
  • »