编程之美:1的数目
来源:互联网 发布:notepad++ for mac 编辑:程序博客网 时间:2024/06/05 18:44
获取N的二进制中1的个数
最简便解法,直接用n与(n-1)进行与操作,直到n=0,程序复杂度只与1的个数有关
void getBinOneNum(int n) { /*获取n二进制中1的个数*/ int count = 0; while (n) { n &= (n - 1); count++; } cout << count;}
获取小于等于N正整数中1的数目:
规律为:求当前位的高位,低位和位数
当前位=0:个数=高位*位数
当前位=1:个数=高位*位数+低位+1
当前位>1:个数=(高位+1)*位数
累加即可得到结果
void getOneNum(int N) { //获得小于等于N的所有1出现的个数 unsigned long long icount = 0; //1的位数统计 unsigned long long iFactor = 1; //10的位数次方 unsigned long long iLowerNum = 0; //低位 unsigned long long iHeigherNum = 0; //低位 unsigned long long iCurrNum = 0; //当前位 while (N / iFactor) { iLowerNum = N - (N / iFactor)*iFactor; iHeigherNum=N / (iFactor * 10); iCurrNum = (N / iFactor) % 10; switch (iCurrNum) { case 0: icount += iHeigherNum*iFactor; break; case 1: icount += iHeigherNum*iFactor + iLowerNum + 1; break; default: icount += (iHeigherNum + 1)*iFactor; break; } iFactor *= 10; } cout << icount;}
阅读全文
0 0
- 编程之美之1的数目
- 编程之美之1的数目
- 编程之美---求1的数目
- 编程之美 2.4 “1”的数目
- 编程之美--1的数目
- 编程之美 2.4 1的数目
- 编程之美 1的数目
- 编程之美 1的数目【转】
- 编程之美 2.4 “1”的数目
- 【编程之美】1的数目
- 编程之美2.4 1的数目
- 编程之美-2.4 1的数目
- [编程之美2.4]1的数目
- 编程之美 2.4 1的数目
- 编程之美 1的数目
- 编程之美2.4 1的数目
- 编程之美:1的数目
- 编程之美-1的数目
- java 集合整理
- TLV320AIC310X音频
- Mybatis 接口用public 和默认修饰符的区别
- MVVM框架Vue基础
- UnicodeEncodeError: 'ascii' codec can't encode characters in position 32-34: ordinal not in range128
- 编程之美:1的数目
- Javascript创建对象的5种姿势
- 【云星数据---Apache Flink实战系列(精品版)】:Apache Flink批处理API详解与编程实战017--DateSet实用API详解017
- 关于数据库三大范式理解
- linux下查看opencv版本
- JS 将 string 转换成为 number
- filebeat采集数据的几个痛点的解决方案
- Flomerics Floemc 6.1(lic carcak) 电磁兼容性的分析
- 树莓派安装console界面并简单配置