`
rein07
  • 浏览: 21238 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

数字1亿里面有多少个1呢

阅读更多
乍看这题真够唬人的,群里看到这个题目后争先恐后的说看法。最简单的办法不外乎就是遍历每个数,然后toString() 看看里面有多少个1,最后全部加起来,这是我们得到标准答案的办法。

群里3个人写了3个笨方法都跑出来了,3个笨方法,呵呵 有意思,笨方法也不一样。 程序的实现真是变幻莫测。

view sourceprint?01 var re = /1{1}/g; 

02   

03 var max = 1 * 10000 * 10000; 

04   

05 getTotal(f); 

06 getTotal(f1); 

07 getTotal(f2); 

08   

09 function getTotal(func) 

10 { 

11     var total = 0; 

12     var begin = new Date(); 

13     for(var i= 1 ;i <= max;i++) 

14     { 

15         total += func(i); 

16     } 

17     var end = new Date(); 

18     var timespan = end - begin; 

19     alert("开始时间:"+begin + "\n 结束时间:"+end +"\n总耗时:"+timespan + "毫秒 \n 总数:"+total); 

20 } 

21   

22 function f(num) 

23 { 

24     var t = 0; 

25     while(num) 

26     { 

27         if(num < 10){ if(num==1)t++;break;} 

28         var i = num % 10; 

29         if(i == 1) t++;     

30         num = parseInt(num / 10); 

31     } 

32     return t; 

33 } 

34   

35 function f1(num) 

36 { 

37     var str = num.toString() 

38     var t = 0; 

39     for(var i=0;i<str.length;i++) 

40     { 

41         if(str.charAt(i)=="1") t++; 

42     } 

43     return t; 

44 } 

45   

46 function f2(num) 

47 { 

48     var str = num.toString(); 

49     var t = 0; 

50     while(re.exec(str)) 

51     { 

52         t++; 

53     } 

54     return t; 

55 }

当数量少的时候第一种最快,显然嘛,没有处理字符串的步骤。按理说数量越大他越有优势。 可是实测结果,3个都差不多。但是用C#跑的话,第一个明显越来越有优势。。。。

但是出题人肯定不是这样想的,很多人都在说自己的技巧与看法,我也思考了很久。

先拿 100来说 ,100里面有多少个1?

view sourceprint?01 10 

02 11 

03 12 

04 13 

05 14 

06 15 

07 16 

08 17 

09 18 

10 19 

11 01 

12 11 

13 21 

14 31 

15 41 

16 51 

17 61 

18 71 

19 81 

20 91

故意这么排列是我们可以把 0~99看作是 1个长度为2的数组, 1位为1时,2位的可能性是10,2位为1时1位的可能性为10,所以 0~99应该有20个1,而100有1个所以是21个。

999就应该是 1*10*10 + 10*1*10 + 10*10*1 = 300

400呢? 因为首位只能出现0~3 ,所以应该是 1*10*10 + 4*1*10 + 4*1*10

4 0000 0000 应该是 1 * (10^8) + 4*(10^7) * 8 = 420000000
分享到:
评论

相关推荐

    1亿以内的质数(共5761455个数).txt_1亿以内素数的个数

    1亿以内的质数(共5761455个数).txt

    javascript从一亿个数中找出最大的100个 或者n个

    从一亿个数中找出最大的100个 或者n个 用了个堆从一亿个数中找出最大的100个 或者n个 用了个堆

    1亿内的所有质数

    把1亿内的所有质数用.in文件里存放 相邻2个数字用空格隔开.

    JAVA面试题大全

    2013年年底的时候,我看到了网上流传的一个叫做《Java面试题大全》的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对这个所谓的《Java面试...

    36-算法的Java实现1

    假设我们有1亿个数字范围,那么代码里的intArr数组也得搞1亿+1个位置,哪怕我们只排序5个数字。冒泡排序相比桶排序,对空间要求不高,但是因为排序的时候使用双

    40亿个非负整数中找到未出现的数

    32位无符号整数的范围是0 ~ 4 294 967 295,现在有一个正好包含40亿个无符号整数的文件,所以在整个范围中必然有未出现过的数。怎么找到所有未出现过的数? 要求: 可以使用最多1GB的内存。 进阶: 内存限制10MB,...

    C++人民币大写转换工具,注释详细

    整数部分里的零读出或不读的情况有以下几种: 1、不读出的情况: 零在每级的结尾时这里的一级是指每四位,个位到千位是一级, 万位到亿位是一级,此后一次类推。 3006200中3后面的两个零是万位到亿位的一级的结尾...

    Java面试宝典2010版

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 39、下面的程序代码输出的结果是多少? 40、final, finally, finalize的区别。 41、...

    电子商务数据分析(1).doc

    我告诉他,大概27万左右,因为网民总1亿 ,365天每天都有人可能过生日,所以这个27万的正确率绝对80%以上。 2,A公司的年度交易量发展变化图 "年度 "每日交易额 "年度交易额 "每日订单量 "平均每单金额( " " "(万)...

    JavaScript将数字转换成大写中文的方法

    本文实例讲述了JavaScript将数字转换成大写中文的方法。分享给大家供大家参考。具体实现方法如下: function intToChinese ( str ) { str = str+''; var len = str.length-1; var idxs = ['','十','百','千','万...

    程序员二进制计算器 v1.36

    只有1个操作数的运算符。 如果操作数是一个常数,它不需要用括号括起,并且与运算符之间不需要空格分隔,如: sqr2 = 1.41421 cos0 = 1 当操作数是表达式时,需要用括号括起,以划分优先级: sqr(1 + 2) = 1....

    最新Java面试宝典pdf版

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 ...

    电子商务数据分析报告实例(1).doc

    所以,如果有人问我,今天大概多少网民过生日我告诉 " "他,大概27万左右,因为网民总1亿,365天每天都有人可能过生日,所以这个27万的正确率绝对80% " "以上。 " " " " " " " "2,A公司的年度交易量发展变化图 " " ...

    Java面试笔试资料大全

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 ...

    java面试宝典2012

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 27 39、下面的程序代码输出的结果是多少? 28 40、final, finally, finalize的区别。 30 ...

    Java面试宝典-经典

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 ...

    JAVA面试宝典2010

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 ...

    java面试题大全(2012版)

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 ...

    Java面试宝典2012版

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 ...

Global site tag (gtag.js) - Google Analytics