由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 设计一个算法,判断一个integer n是不是可以表示成k(k>=2)个连续正整数的和
相关主题
国内小学生奥数题目~~ (转载)我也来道题吧
怎么找一个数组里面,出现次数是偶数的数?求两个等长有序数组的median的细节
问个题目: 从1-n 中找出k, 使得 k=a^2 +b^2 (a b 为整数)中国人面试果然很好人
贡献面经 amazon, 虽然面挂了,还是攒点人品请教一道面试题
继续研究数组分段题请问一道google面试题
Integer Partition problemmedian 到底是啥意思??
[合集] 面试题 - white elephant gift exchangea1b2c3d4 变abcd1234
上周Onsite题目及不爽之事游戏公司基本上挂了
相关话题的讨论汇总
话题: 正整数话题: 2t话题: 奇数话题: 偶数话题: integer
进入JobHunting版参与讨论
1 (共1页)
l********y
发帖数: 1327
1
设计一个算法,判断一个integer n是不是可以表示成k(k>=2)个连续正整数的和
比如:9=4+5 或者9=2+3+4, 但是8就不可以
奇数都可以,但是偶数怎么判断?
E********a
发帖数: 124
2

这还要“算法”? 所有非2^n的数都可以

【在 l********y 的大作中提到】
: 设计一个算法,判断一个integer n是不是可以表示成k(k>=2)个连续正整数的和
: 比如:9=4+5 或者9=2+3+4, 但是8就不可以
: 奇数都可以,但是偶数怎么判断?

l********y
发帖数: 1327
3
why?
m******n
发帖数: 1691
4
10=1+2+3+4
任何一个数sum,如果 sum/奇数=整数,那么可以;
如果 sum/偶数=整数+0.5,也是可以。
除此以外都不行。

【在 l********y 的大作中提到】
: 设计一个算法,判断一个integer n是不是可以表示成k(k>=2)个连续正整数的和
: 比如:9=4+5 或者9=2+3+4, 但是8就不可以
: 奇数都可以,但是偶数怎么判断?

d*****t
发帖数: 41
5
设一个数n是从a开始k个连续正整数的和,有
n = (a+a+k-1)/2*k = (2a+k-1)*k/2
i.e. 2*n = (2a+k-1)*k
不管k是奇是偶,(2a+k-1)*k 都是一个奇数*偶数,所以n不能是2^m
w***g
发帖数: 5958
6
这个牛. 你是对的.

【在 E********a 的大作中提到】
:
: 这还要“算法”? 所有非2^n的数都可以

m******n
发帖数: 1691
7
你只证明2^m 不可能是k个数相加
没证明非2^m就一定是k个数相加

【在 d*****t 的大作中提到】
: 设一个数n是从a开始k个连续正整数的和,有
: n = (a+a+k-1)/2*k = (2a+k-1)*k/2
: i.e. 2*n = (2a+k-1)*k
: 不管k是奇是偶,(2a+k-1)*k 都是一个奇数*偶数,所以n不能是2^m

s*******e
发帖数: 93
8
我一开始是想写成这样
for(i=2;i<=n/2;i=i*2)
{
if( n%i == i/2 && n/i-i/2>=1)
return true;
}
for(i=3;i<=n/3;i=i+2)
{
if( n%i == 0 && n/i-(i-1)/2>=1)
return true;
}
return false;
感觉2^m的方法是正解。上面用code的方法不知道能不能帮助证明为什么只要不是2^m就
行?
btw有没有谁可以检查下这个code有无漏洞?
D***h
发帖数: 183
9
n为奇数,n = (n-1)/2+ (n+1)/2
n为偶数, 已经证明n = 2^s (s>0) 不能
假设 n = 2^s * (2t+1) (s>0, t>0)
n= (1+2+...+m)-(1+2+...+k)
=(m-k)(m+k+1)/2
令 m-k = 2^(s+1)
m+k+1 = 2t+1
可以得到 m = 2^s +t
k = -2^s +t
如果k<0
m+k+1 = 2^(s+1)
m-k = 2t+1
得到m = 2^s+t
k = 2^s-t-1
总是有解。
所以除了2^s以外的所有大于2得数都是可以的.

【在 m******n 的大作中提到】
: 你只证明2^m 不可能是k个数相加
: 没证明非2^m就一定是k个数相加

D***h
发帖数: 183
10
见我上面的证明

【在 s*******e 的大作中提到】
: 我一开始是想写成这样
: for(i=2;i<=n/2;i=i*2)
: {
: if( n%i == i/2 && n/i-i/2>=1)
: return true;
: }
: for(i=3;i<=n/3;i=i+2)
: {
: if( n%i == 0 && n/i-(i-1)/2>=1)
: return true;

1 (共1页)
进入JobHunting版参与讨论
相关主题
游戏公司基本上挂了继续研究数组分段题
问一个题目,面试时我没有搞出来Integer Partition problem
有人做过twitter的online coding test么?什么类型什么难度的题目啊?[合集] 面试题 - white elephant gift exchange
一个学数学的同学PhD方向是Pi最后一位是奇数还是偶数上周Onsite题目及不爽之事
国内小学生奥数题目~~ (转载)我也来道题吧
怎么找一个数组里面,出现次数是偶数的数?求两个等长有序数组的median的细节
问个题目: 从1-n 中找出k, 使得 k=a^2 +b^2 (a b 为整数)中国人面试果然很好人
贡献面经 amazon, 虽然面挂了,还是攒点人品请教一道面试题
相关话题的讨论汇总
话题: 正整数话题: 2t话题: 奇数话题: 偶数话题: integer