题目描述:

给定一个数字n,统计1~n之间的n个数字的二进制的1的个数

int Nums_Of_Bit_1(int num) 
{
    int* number = new int[num];
    int pow = 1,before =1;
int count = 0;

for(int i=1; i<=num; i++){
        if (i == pow){
            before = number[i] = 1;
            pow <<= 1;
        }
        else{
            number[i] = number[before] + 1;
            before += 1;
        }
count += number[i];
    }
    return count;
}

int main()
{
cout<<Nums_Of_Bit_1(11)<<endl;
return 0;
}

/*

公式:f(n) = f(2^x)+f(k),不大于f(n)的最大的2的次方,k一定是在前面出现的,
用数组保存起来,可以直接查询。
举例f(5) = f(4)+ f(1)(注意2的x次方都是一个1),而且是最高位
f(5) = 1+f(1),f(6) = 1+f(2) f(7) = 1+f(3)直到f(8) = 1

*/

{
    int* number = new int[num];
    int pow = 1,before =1;
int count = 0;

for(int i=1; i<=num; i++){
        if (i == pow){
            before = number[i] = 1;
            pow <<= 1;
        }
        else{
            number[i] = number[before] + 1;
            before += 1;
        }
count += number[i];
    }
    return count;
}

int main()
{
cout<<Nums_Of_Bit_1(11)<<endl;
return 0;
}

/*

公式:f(n) = f(2^x)+f(k),不大于f(n)的最大的2的次方,k一定是在前面出现的,
用数组保存起来,可以直接查询。
举例f(5) = f(4)+ f(1)(注意2的x次方都是一个1),而且是最高位
f(5) = 1+f(1),f(6) = 1+f(2) f(7) = 1+f(3)直到f(8) = 1

*/

求1到n ,这n个整数的二进制表示比特1的个数(时间复杂度:O(n))相关推荐

  1. 算法--微软面试:整数的二进制表示中1的个数(Java实现)

    Q题目 整数的二进制表示中1的个数 输入一个整数,求该整数的二进制表达中有多少个1. 例如,输入10,由于其二进制表示为1010,有两个1,因此输出2. 这是一道很基本的考查位运算的面试题. Answ ...

  2. 整数的二进制表示中 1 的个数

    2019独角兽企业重金招聘Python工程师标准>>> 题目:整数的二进制表示中 1 的个数 要求: 输入一个整数,求该整数的二进制表达中有多少个 1. 例如输入 10,由于其二进制 ...

  3. 100题_22 整数的二进制表示中1的个数

    输入一个整数,求该整数的二进制表达中有多少个1.例如输入10,由于其二进制表示为1010,有两个1,因此输出2. 这个题非常简单,考的是位运算,我们每次向左移1位,判断最后一位是不是1就可以了.不多说 ...

  4. 输出一个整数的二进制表示中1的个数

    引言 在一个非零整数的二进制表示中,至少有一位是1.如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,若这个1的后面还有数字0,则这些数字0都会变成1,其余所有位不变. 举例如下:二进制数 ...

  5. 判断1个整数的二进制形式的1的个数

    int main() {int n;cin >> n;int num = 0;while(n){n &= (n-1);num++;}cout << num <&l ...

  6. ACMNO.39 分解质因数 求出区间[a,b]中所有整数的质因数分解。蓝桥杯训练!

    题目描述 求出区间[a,b]中所有整数的质因数分解. 输入 输入两个整数a,b. 输出 每行输出一个数的分解,形如k=a1*a2*a3...(a1< =a2< =a3...,k也是从小到大 ...

  7. ACMNO.22 C语言-公约公倍2 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。 输入 两个数 输出 最大公约数 最小公倍数

    题目描述 写两个函数,分别求两个整数的最大公约数和最小公倍数, 用主函数调用这两个函数,并输出结果两个整数由键盘输入. 输入 两个数 输出 最大公约数 最小公倍数 样例输入 6 15 样例输出 3 3 ...

  8. C/C++求一个整数的二进制中1的个数

    求一个整数的二进制中1的个数 收藏 题目:输入一个整数,求该整数的二进制表达中有多少个1.例如输入10,由于其二进制表示为1010,有两个1,因此输出2. 分析:这是一道很基本的考查位运算的面试题.包 ...

  9. python中合法的二进制整数_python:求整数的二进制表示

    求解方法: 1.整数求余 2.重复进行,整数除2再求余,直到除数为0 3.拼接余数 4.反转字符串 defint2two(intNo): twoStr='' if intNo ==0: twoStr= ...

最新文章

  1. Python中os与sys两模块的区别
  2. mysql存储过程游标移动_mysql动态游标与mysql存储过程游标(示例)
  3. 自定义序列化和反序列化的java实现
  4. kafka手动调整分区副本数
  5. Linux下的超级终端minicom与XGCom
  6. WTS考勤系统报表实现原理
  7. 计算机鼠标左键不起作用,电脑鼠标左键突然不好用了 右键没问题
  8. 2021平凉二中高考成绩查询,平凉二中召开2020届高考启动暨教学工作推动会
  9. 黑苹果EFI引导启动文件,技嘉Z77P-D3+E3-1230 V2+蓝宝石RX560D+Macos10.15.x(5)
  10. Spring Cloud微服务:Loadbalancer 实战
  11. SpringBoot - LogAroundAop MVC请求日志拦截
  12. outlook 日历共享_如何共享您的Outlook日历
  13. UnityShader学习之路(01) 漫反射
  14. 梯度下降法实现线性回归, 实例---预测波士顿房价
  15. 机器学习-贝叶斯分类
  16. getservbyname、getservbyport
  17. 老嘤学习笔记——python函数
  18. php解析word文档
  19. Fabric创建通道流程解析
  20. 常见 Web 攻击(前端篇)

热门文章

  1. SHT知识库操作要点
  2. Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程
  3. IDEA项目找不到浏览器报错的情况
  4. 小程序支付成功后跳转页面失败
  5. VMware安装Centos7后有线线缆被拔出
  6. 【bzoj1565】[NOI2009]植物大战僵尸 【网络流】【最大权闭合子图】
  7. qunit 前端脚本测试用例
  8. SQL版DNN的安装心得
  9. PCL点云 Lebel:Research
  10. Tomcat - Maven plugin: 运行找不到webapp