郭先抢 发表于 2012-12-14 18:49:29

这个肯定会循环的,因为一位数与两位数都是有限的

chyanog 发表于 2012-12-17 17:19:29

3# wayne

今天又重写了一下,Join @@ Table[{{i, j},
    NestWhile[#~Join~IntegerDigits@Tr[#[[-2 ;;]]] &, {i, j},
   FreeQ], 2, 1], #[[-2 ;;]]] &]},
   {i, 0, 9}, {j, 0, 9}] // Grid

郭先抢 发表于 2012-12-17 18:33:24

3# wayne

今天又重写了一下,Join @@ Table[{{i, j},
    NestWhile[#~Join~IntegerDigits@Tr[#[[-2 ;;]]] &, {i, j},
   FreeQ], 2, 1], #[[-2 ;;]]] &]},
   {i, 0, 9}, {j, 0, 9} ...
chyanog 发表于 2012-12-17 17:19 http://bbs.emath.ac.cn/images/common/back.gif
把结果贴上来吧

郭先抢 发表于 2012-12-17 18:33:52

如果不仅有代码还有结果,那就更好了

chyanog 发表于 2012-12-17 18:55:08

13# 郭先抢
和前面的结果是一样的,wayne已经贴过了

chyanog 发表于 2012-12-17 19:00:41

本帖最后由 chyanog 于 2012-12-17 19:05 编辑

f[{a_, b_, n_}] :=
Module[{li, pos, left, repeat},
   li = NestWhile[#~Join~IntegerDigits@Tr[#[[-2 ;;]]] &, {a, b},
   FreeQ], 2, 1], #[[-2 ;;]]] &];
   
   pos = Position, li[[-2 ;;]], 1, 1][];
   {left, repeat} = {#[[;; pos - 1]], #[]} &@li;
   If, left[],
    repeat[, Length, 1]]]]
   ];

f /@ {{1, 1, 2}, {1, 1, 8}, {1, 4, 8}, {1, 5, 10^8 - 1}, {1, 7, 10^8}}

(*out:{1, 3, 9, 8, 3} *)
原题是写这样的一个函数,不过我觉得写的不够neat,wayne兄有空给指点下呗

chyanog 发表于 2012-12-18 19:27:52

本帖最后由 chyanog 于 2012-12-18 20:31 编辑

经过一些测试,Mathematica中Nest不慢,而NestWhile并没有While高效,可能比FixedPoint还慢一点

wayne 发表于 2012-12-20 15:14:58

16# chyanog
能说说函数的功能吗

chyanog 发表于 2012-12-20 16:00:04

本帖最后由 chyanog 于 2012-12-20 16:03 编辑

18# wayne
就是这个链接里的呀,http://astar.baidu.com/index.php?r=home/detail&id=2
f(a,b,n),a,b是前两个数,返回的是第n个数是几

wayne 发表于 2012-12-21 12:08:19

19# chyanog
一时没找到合适的函数,姑且用用字符串处理函数.f :=
Module[{a = a0, b = b0, n = n0, i, t, tmp, xx},
xx = Table;
tmp = NestWhile[(xx[[#[[-2]] + 1, #[[-1]] + 1]] = 1; Join[#, IntegerDigits]]]) &, {a, b}, xx[[#[[-2]] + 1, #[[-1]] + 1]] == 0 &];
t = StringJoin;
t = StringPosition][];
tmp[ - t - 1] + t]]]]
页: 1 [2] 3 4
查看完整版本: 百度之星的一道与斐波那契数列有关的题