以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Java/Eclipse 』  (http://bbs.xml.org.cn/list.asp?boardid=41)
----  google的一道JAVA面试题[分享]  (http://bbs.xml.org.cn/dispbbs.asp?boardid=41&rootid=&id=51060)


--  作者:hongjunli
--  发布时间:8/7/2007 12:41:00 PM

--  google的一道JAVA面试题[分享]
java代码:

Consider a function which, for a given whole number n, returns the number of ones required when writing out all numbers between 0 and n.

  For example, f(13)=6. Notice that f(1)=1. What is the next largest n such that f(n)=n?

  翻译过来大体是这样:
  有一个整数n,写一个函数f(n),返回0到n之间出现的"1"的个数。比如f(13)=6,现在f(1)=1,问下一个最大的f(n)=n的n是什么?

  答案一:

int getCountOfNumber(int number){  
                int count=0;  
                int length=("" + number).length();  
                 
                for(int i=0;i<=length;i++){  
                        int num=number%10;  
                        number=(number-num)/10;  
                         
                        if(num*num==1) count++;  
                }  
                 
                return count;  
        }

  计算到:199981 用了203
  不过只计算到上边的数值就没多大意思,看看这个:
  这个是4000000000以内的结果!:
  f(0) = 0
  f(1) = 1
  f(199981) = 199981
  f(199982) = 199982
  f(199983) = 199983
  f(199984) = 199984
  f(199985) = 199985
  f(199986) = 199986
  f(199987) = 199987
  f(199988) = 199988
  f(199989) = 199989
  f(199990) = 199990
  f(200000) = 200000
  f(200001) = 200001
  f(1599981) = 1599981
  f(1599982) = 1599982
  f(1599983) = 1599983
  f(1599984) = 1599984
  f(1599985) = 1599985
  f(1599986) = 1599986
  f(1599987) = 1599987
  f(1599988) = 1599988
  f(1599989) = 1599989
  f(1599990) = 1599990
  f(2600000) = 2600000
  f(2600001) = 2600001
  f(13199998) = 13199998
  f(35000000) = 35000000
  f(35000001) = 35000001
  f(35199981) = 35199981
  f(35199982) = 35199982
  f(35199983) = 35199983
  f(35199984) = 35199984
  f(35199985) = 35199985
  f(35199986) = 35199986
  f(35199987) = 35199987
  f(35199988) = 35199988
  f(35199989) = 35199989
  f(35199990) = 35199990
  f(35200000) = 35200000
  f(35200001) = 35200001
  f(117463825) = 117463825
  f(500000000) = 500000000
  f(500000001) = 500000001
  f(500199981) = 500199981
  f(500199982) = 500199982
  f(500199983) = 500199983
  f(500199984) = 500199984
  f(500199985) = 500199985
  f(500199986) = 500199986
  f(500199987) = 500199987
  f(500199988) = 500199988
  f(500199989) = 500199989
  f(500199990) = 500199990
  f(500200000) = 500200000
  f(500200001) = 500200001
  f(501599981) = 501599981
  f(501599982) = 501599982
  f(501599983) = 501599983
  f(501599984) = 501599984
  f(501599985) = 501599985
  f(501599986) = 501599986
  f(501599987) = 501599987
  f(501599988) = 501599988
  f(501599989) = 501599989
  f(501599990) = 501599990
  f(502600000) = 502600000
  f(502600001) = 502600001
  f(513199998) = 513199998
  f(535000000) = 535000000
  f(535000001) = 535000001
  f(535199981) = 535199981
  f(535199982) = 535199982
  f(535199983) = 535199983
  f(535199984) = 535199984
  f(535199985) = 535199985
  f(535199986) = 535199986
  f(535199987) = 535199987
  f(535199988) = 535199988
  f(535199989) = 535199989
  f(535199990) = 535199990
  f(535200000) = 535200000
  f(535200001) = 535200001
  f(1111111110) = 1111111110



--  作者:linlingyue
--  发布时间:8/10/2007 11:20:00 AM

--  
楼主很辛苦,顶一下
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
54.688ms