今天朋友去一家公司面试,让给出10位数以内的所有水仙花数.
我不知道是不是面试官表达的问题,至少我现在为止是没有想出什么高效的办法.或许他只是需要给出一个实现的方式.
我认为实现方式只能是一个一个遍历,所以心思只能用在如何高效的取到每个位上的数字,高效的POW
各位有何方式实现?

解决方案 »

  1.   

    其实草率的提出这个问题,很大的原因是因为我觉得不需要一个一个遍历.
    所以请不要在取每个位上数字和POW上做文章.
      

  2.   

    其实草率的提出这个问题,很大的原因是因为我觉得不需要一个一个遍历.
    所以请不要在取每个位上数字和POW上做文章.
      

  3.   

    你“觉得不需要一个一个遍历”,那你有没有学过数论呢?专业点解就是整数线性规划建模,更专业点还可以搞分布式计算...但是如果是一般公司考初级coder我估计就是要“一个一个遍历”的蠢办法...因为一般大家不会对初级coder搞线性规划建模报有期望,不过是考考最基础的循环啦赋值啦什么的而已,甚至可能只是照搬n年前无营养的C语言习题而已...ps:要是我做的话什么算法也不要...因为没记错的话,已知的水仙花数不超过90个,已知的10位数以内的水仙花数不超过30个,随便建一个几乎不占用什么资源的字典就解决了,直接查...绝对是最高效...
      

  4.   

    google一下,一下链接有介绍
    http://baike.baidu.com/view/152077.htm
      

  5.   

    本帖最后由 caozhy 于 2011-11-15 02:54:08 编辑
      

  6.   

    caozhy的程序我还是没看懂,求解释.
    正如月影书中所说,感觉自己真配不上"Programmer"这个词.
      

  7.   


    这是正解。 如果要优化,那就把这个结果放进一个线性结构中,Mapping什么的,使用10的幂作为key,List<long>作为value,这样下一次取得某个阶内的水仙花数就直接是IO操作了。效率第一。