作者gigiball (gigiball=睾丸 是公的)
站内Prob_Solve
标题Re: [问题] 面试遇到的程式问题,现在还想不出来(MTK)
时间Fri Jan 4 11:28:57 2008
可以用数学公式来解决这个问题
试着推导出公式
0可以不用看了
1 ~ 100 中间数为50
1~ 49 为一组 51 ~ 99为一组
各组各数为49
1+99 =100
2+98 =100
3+97 =100.....以此类推
共有 49个100 加上 i<= 100 所以100再加一个 等於 50个100
加上原本的中间数 50
答案为5050
可以推导出公式为 (X^2/2) + (x/2)
i推到 150 答案为 11325
当然还可以再优化.... 在计算过程中
用位元的变化去处理上述的运算式 也是ok的
看有没有大大还有其他解....罗.....
※ 引述《asleepme (冬天了)》之铭言:
: ※ [本文转录自 Tech_Job 看板]
: 作者: asleepme (冬天了) 看板: Tech_Job
: 标题: [问题] 面试遇到的程式问题,现在还想不出来...
: 时间: Sun Dec 30 13:42:09 2007
: 是当面问的
: 不过他当初是这样讲的:
: 有一个for回圈,从0加到100
: 可是我觉得他不够快,要怎样才能让他更快
: for( i=0; i<=100; i++)
: s=s+i;
: 不可以用数学公式
: 请忽略宣告或初始化的问题,我想不是重点
: 因为我当初把i=0改成i=1的时候他只是无言的笑了笑
: 请指点
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.87.151.2
1F:→ gigiball:啊..我这算公式吗..比较像建构式数学... 01/04 11:31
2F:推 ClubT:不是有说不能用公式... 01/04 14:06
3F:推 yun224:我想知道,学校是不是没有教高斯法啊@@... 01/04 16:27
4F:→ final01:Gauss幼稚园提出的方法 01/04 16:41
5F:→ revivalworld:这个证明跟高斯的故事国中不是教过= = 01/04 18:51
6F:→ Astar:挺难的公式,真佩服你推出来了。 01/04 22:40
7F:→ phi61023:(X^2/2)+(x/2)不就是[n*(n+1)]/2吗? 还是使用公式了..Orz 02/21 13:20