玩玩小学奥数题吧
对于一个自然数的序列做如下运算,在纸上每次把最前面的两个数字的和添加到最后一位,然后将前面的两个数字划掉,一直到只剩下最后一个数截止。例如对于1,2,3,4四个数字的序列
第一次变化为3,4,3。
第二次变化为3,7
第四次变化为10
那么在纸上留下的所有数字(包括被划掉的)为:1,2,3,4,3,7,10.
这一系列的数字的和为30。
问题:如果这一序列为1,2,……,94,那么结果是多少。
推而广之,对于一个1到N的序列,结果是多少。 N个数字,每次变化少一个,N次变化后剩一个。
变化后和不变。
但是有重复。 电脑上不好画,算晕了。 本帖最后由 wiley 于 2009-12-11 13:36 编辑
{N(N+1)}/2 (mod\ 9) 楼上的答案应该是不正确的。
当N=4的时候,结果是30.
楼上的答案是多少?mod是求余?那肯定是一个非常小的数字了。 答案当N=94的时候,结果是33085. 记录下Haskell解题代码
Prelude> let t0 l = if (length l) >= 2 then tail (tail l) ++ [(head l) + (head (tail l))] else []
Prelude> let t1 (a, l) = (a + (head l) + (head (tail l)), t0 l)
Prelude> t1 (0, )
(3,)
稍后,考虑用迭代实现之 Prelude> let t2 (a, l) = if (length l) == 0 then a else if (length l) == 1 then (a + (head l)) else (t2 (t1 (a, l)))
Prelude> t2 (0, )
30
Prelude> t2 (0, )
48 Prelude> let t3 n = t2 (0, )
Prelude> t3 6
73
Prelude> t3 7
105
Prelude> t3 8
144
Prelude> t3 9
183
Prelude> t3 94
33085 -> ++ -> ++ -> ++ -> ++
sum + sum =48
页:
[1]
2