`
ribishuangba
  • 浏览: 290768 次
文章分类
社区版块
存档分类
最新评论

在1~500这500个整数中,找出连续相加等于500的数?

 
阅读更多

昨天碰到有人问起一个题目:在1~500这500个整数中,找出连续相加等于500的数?

其实这是一道很简单的面试题。为什么有人偏偏不喜欢自己解决呢?我想,最重要的是很多人不喜欢动脑动手。得罪很多人了啊。呵呵。

简要分析:int[] X={1,2,i,…………499}

条件是:i+(i+1)+ ……+(i+k)=500 (1式)

运用等差数列求和公式:(k+1)*i+(k+1)*k/2=500 (2式)

其中i和k还有一个隐藏关系i*k<500 (3式)

于是很自然得到如下解法:

得出结果:

xi=8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30;31;32
xi=59;60;61;62;63;64;65;66
xi=98;99;100;101;102

eaglet 提出,该算法性能不佳,参照他的算法,修改如下:

另外根据条件,

(k+1)k<2*maxInt,可以得出(k+1)(k+1)<2*maxInt (4式)

可以提出连续的最多整数为32,故也可以得如下算法:

邀月注:本文版权由邀月和CSDN共同所有,转载请注明出处。
助人等于自助! 3w@live.cn

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics