javascript 编程(1)【小于整数m的带0,1的数字个数】
来源:互联网 发布:自我评价设计专业知乎 编辑:程序博客网 时间:2024/04/29 23:46
题目描述
给定一个整数m,求小于m的只带0,1的数字的个数(0除外)。例如:
输入:
30
输出:
3
因为小于30且只带0,1的数字有 1,10,11三个。
题目分析
只带0,1的数字可以看作一个二进制数字,可以找到小于m的最小的0,1数,这个数字我们可以当成一个二进制数字,这个二进制数字的值就是小于m的0,1数字的个数。
例如:
m 小于m的最大0,1数k 把k当成一个二进制数 k的值即个数
30 11(10进制) 11(二进制) 2e1 + 2e0 = 3
js代码
function test (m) { //n是m的最高位-1 var n = Math.floor(Math.log10(m)); //sum存储最后的值 var sum = 0; //从最高位开始遍历 for(var i = n; i >= 0; i--){ //temp存储每一位的值 var temp = parseInt(m/Math.pow(10,i)); //每遍历一次m的最高位会被去掉 m= m- temp * Math.pow(10,i); if(temp != 0 && temp != 1){ //如果最高位不是0或1后面的位数全都赋值为1 for(var j = i ; j >= 0; j--){ sum = sum + Math.pow(2,j); } break; }else{ if(temp == 1){ sum = sum + Math.pow(2,i); } if(temp == 0) continue; } } return sum; }
另一种方法:
function test(num){ /*传入的参数是一个数字,把这个数字转换成字符串,再把字符串转换成数组,这样数字的位数就存储在了一个数组中。*/ var str = new String(num); var arr0 = str.split(""); /*把数组倒过来,使数组下标对应数字的位数,例如12345,a[0]=5,表示最低位,a[4]=1,表示最高位。*/ var arr = arr0.reverse(); var sum = 0; //从最高位开始遍历。 for(var i = arr.length-1;i >= 0;i--){ //如果最高位不是0或1,后面的位数全都赋值为1,并且结束循环。 if(arr[i] != 0 && arr[i]!= 1){ for(var j = i;j >= 0;j--){ //按照二进制进行加法。 sum = sum + Math.pow(2,j) } break; }else if(arr[i] == 1){ sum = sum + Math.pow(2,i); }else if(arr[i] == 0){ continue; } } return sum;}console.log(test(100))
0 0
- javascript 编程(1)【小于整数m的带0,1的数字个数】
- 动态规划实现:给定整数m , 取若干个1到n的整数可求和等于整数m,编程求出所有组合的个数。
- 求小于N的正整数中含有1的数字的个数
- 2014 GCJ Round 1B New Lottery Game(数位dp,x小于等于A,y小于等于B,并且x&y值小于等于K的数字个数)
- 编程之美--数字1的个数
- 从键盘输入10个0-9的整数,统计为1、2、3的数字和其他数字的个数
- 欧拉函数--(求小于n的整数中与n互质的个数)
- C语言从数字n到m有多少的不带4的整数
- 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数(移动次数小于等于n)
- 小于1的数,整数位显示0(显示零)
- 编程之美--整数中1的个数
- 挑战面试编程:计算整数二进制位中1的个数
- c编程:整数的个数。
- n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字),当一个数字删除后,从被删除数字的下一个继续删除第m个数
- c语言编程 有n个整数,使其前面各数顺序向后移动m个位置,最后m个数变成前面的m个数
- N个数中选择M个数的组合(1<M<N)
- 编程实现求一个整数的二进制中0和1的个数
- [编程题]求 1-N 中数字 1 的个数
- 【Java】冒泡排序
- suricata 3.1 源码分析18 (模块注册及初始化)
- Python 学习笔记
- tp中 <include file="Public:header"/>
- HashMap简介
- javascript 编程(1)【小于整数m的带0,1的数字个数】
- sweet-alert-dialog在在android studio应用问题说明
- RabbitMQ使用
- 图像检索:基于内容的图像检索技术
- 开发工具问题笔记-运行android工程时出现Unsupported major.minor version 52.0错误
- LiteRead 闲暇时间学习 retrofit+rxAndroid 的项目.
- ExpandableListView只打开一个组,关闭其他组
- SVD在推荐系统中的应用详解以及算法推导
- 新书《iOS Swift 游戏开发经典实例》出版了(样书收到,上架也就是这几天的事情了)