回 帖 发 新 帖 刷新版面

主题:2006比赛的一道题:数学陷阱问题

4,37,89,145,42,20这8个数是一组数字陷阱。因为一个二位数,例如14,把各数字平方后求和,得新数17,再把新数的各数字平方后求和,得50,这样继续下去,是25,29,85,89。到89后,就进入了这个数字陷阱,再算下去,就会一直在陷阱中8个数中循环,编程序,求出所有的二位数中跌入上面这个陷阱中所需的最多步数的那个数,并给出这个数跌入陷阱的变化过程(即如果这个数是14,应给出:14,17,50,一直到现该陷阱中的一个数为止)。

回复列表 (共2个回复)

沙发

....这个题目没什么需要考虑的啊 很直观...
也就是2位数 可以简化下
因为   23  和32  的计算结果一样的   34和 43    57和75  等
所以计算的2位数j可以是
for i= 1 to 9
for j= (i*10+i) to (i*10+9)
{progrm...}
next:next
由于10 是无解的 所以实际运算的数字是11--19:22--29:33--39:44--49:55--59:66--69:77--79:88--89:99

板凳

CLS
DIM B(10000), C(10000)
FOR I = 1 TO 8
  READ A(I)
NEXT I
DATA 4, 16, 37, 58, 89, 145, 42, 20
FOR I = 10 TO 99
  K = 1
  B(K) = I
  DO
  IF B(K) = 1 THEN GOTO 10
  FOR J = 1 TO 8
    IF B(K) = A(J) THEN EXIT DO
  NEXT J
  X = B(K) MOD 10
  Y = B(K) \ 10 MOD 10
  Z = B(K) \ 100
  K = K + 1
  B(K) = X ^ 2 + Y ^ 2 + Z ^ 2
  LOOP
  IF K > M THEN M = K : FOR J = 1 TO K : C(J) = B(J) : NEXT J
10 NEXT I
PRINT M - 1; "BU";
FOR I = 1 TO M
  PRINT C(I);
NEXT I
END

我来回复

您尚未登录,请登录后再回复。点此登录或注册