您的位置:首页 > 职场人生

只考加法的面试题

2014-01-03 16:41 120 查看
问题出自编程之美。解法是自己思路

3=1+2

9=4+5

9=2+3+4

问题:对于正整数n,输出所有可能连续自然数(至少两个)之和的算式

分析正整数2,3,9,18,30

分析2,无解

分析3,3=1+2,1个解

分析9,9=2+3+4

分析18,对其进行因式分解,18=2*3*3

设定解中有2个数,无解

设定解中有3个数,则有2*3-1,2*3,2*3+1构成一个解

设定解中有6个数,无解

设定解中有9个数,则由2-4,2-3,2-2,2-1,2,2+1,2+2,2+3,2+4,即-2,-1,0,1,2,3,4,5,6,即3,4,5,6,构成一个解

设定解中有18个数,无解

分析90,对其进行因式分解,30=2*3*3*5

设定解中有3个数,有解

设定解中有5个数,有解

设定解中有9个数,有解

设定解中有15个数,有解

设定解中有45个数,有解

归纳,n的解个数只和n的质因数的个数有关,设n的质因数情况为

p1 k1个

p2 k2个

.......

pm km个

则解的个数为

(k1+1)(k2+1)...(km+1)-1个

求在64位正整数范围内解的个数最多的数?

未想好.

上网搜了搜,大家都说根据贪心策略,结果应该为3^x,好吧这显然是错的(比如1000以内最大的,3^6,解有7个,但是225的解就有8个,所以这个贪心不成立)。

自己还未想出解法,到此为止吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: