主题:2006比赛的一道题:数学陷阱问题
yubinsf
[专家分:0] 发布于 2006-10-23 15:28:00
4,37,89,145,42,20这8个数是一组数字陷阱。因为一个二位数,例如14,把各数字平方后求和,得新数17,再把新数的各数字平方后求和,得50,这样继续下去,是25,29,85,89。到89后,就进入了这个数字陷阱,再算下去,就会一直在陷阱中8个数中循环,编程序,求出所有的二位数中跌入上面这个陷阱中所需的最多步数的那个数,并给出这个数跌入陷阱的变化过程(即如果这个数是14,应给出:14,17,50,一直到现该陷阱中的一个数为止)。
回复列表 (共2个回复)
沙发
mickeyice [专家分:200] 发布于 2006-10-23 22:25:00
....这个题目没什么需要考虑的啊 很直观...
也就是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
板凳
hxy_anhui [专家分:320] 发布于 2009-01-30 13:41:00
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
我来回复