读书人

只考加法的面试题解决方案

发布时间: 2012-03-23 12:06:21 作者: rapoo

只考加法的面试题


1+2=3
4+5=9
2+3+4=9

问题1:

为什么2的N次幂就不能够表达为一系列连续自然数之和?
求证明

问题2:
对于一个64位正整数,输出它所有可能的连续(两个以上)自然数之和的算式。

问题3:
在64位正整数范围内,子序列数目最多的数是哪一个???(提示用数学知识进行推导)

[解决办法]
问题1.
连续自然数之和(从m到n)可以表示为(m+n)*(n-m+1)/2。
如果m+n为偶数,则n-m+1为奇数,反之亦然。即(m+n)和(n-m+1),必有一个是奇数。
2的N次幂的值不可能有奇数因子,所以...
[解决办法]
假设m个连续自然数,其中最小数为n

总和S=m*n + m * m/2

第二题就是
当S固定时,m=1,2,...N
时n的值(n必须是整数)
[解决办法]
http://hi.baidu.com/yjsagacity/blog/item/85b9428b506efb1bc9fc7a4b.html
[解决办法]
第二题:
我写点伪代码,你看看思路吧:
for(i=1,i<n/2,i++)//n 64bit number
{
j=i
while(m<n)
{
m=j+(j+1)//record the j\j++
if (m<n)continue;
if(m=n)//output
if(m>n)//break to for(),i++,next start number
}
}
这样似乎可以。抛砖引玉了
[解决办法]
对了,第三题是在第二题的基础上比较最后的结果序列长度就行了

读书人网 >C++

热点推荐