到处瞎逛 发表于 2009-12-11 11:46:19

玩玩小学奥数题吧

对于一个自然数的序列做如下运算,在纸上每次把最前面的两个数字的和添加到最后一位,然后将前面的两个数字划掉,一直到只剩下最后一个数截止。

例如对于1,2,3,4四个数字的序列

第一次变化为3,4,3。

第二次变化为3,7

第四次变化为10

那么在纸上留下的所有数字(包括被划掉的)为:1,2,3,4,3,7,10.

这一系列的数字的和为30。

问题:如果这一序列为1,2,……,94,那么结果是多少。

推而广之,对于一个1到N的序列,结果是多少。

风云剑 发表于 2009-12-11 12:55:01

N个数字,每次变化少一个,N次变化后剩一个。
变化后和不变。
但是有重复。

风云剑 发表于 2009-12-11 12:55:42

电脑上不好画,算晕了。

wiley 发表于 2009-12-11 13:34:46

本帖最后由 wiley 于 2009-12-11 13:36 编辑

{N(N+1)}/2 (mod\ 9)

到处瞎逛 发表于 2009-12-11 15:22:09

楼上的答案应该是不正确的。

当N=4的时候,结果是30.

楼上的答案是多少?mod是求余?那肯定是一个非常小的数字了。

到处瞎逛 发表于 2009-12-11 15:36:36

答案当N=94的时候,结果是33085.

无心人 发表于 2009-12-11 15:39:51

记录下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,)

稍后,考虑用迭代实现之

无心人 发表于 2009-12-11 15:44:09

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

无心人 发表于 2009-12-11 15:44:59

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

无心人 发表于 2009-12-11 15:49:24

-> ++ -> ++ -> ++ -> ++
sum + sum =48
页: [1] 2
查看完整版本: 玩玩小学奥数题吧