主题:问题
蓝莎菲莹
[专家分:370] 发布于 2007-03-26 10:00:00
1.问题
6174是一个有趣的数,它叫做卡普雷卡尔常数。任意写一个数字不全一样的四位数,先把这个四位数的各位数字按从大到小的顺序组成一个新的四位数,然后减去这些数字由小到大组成的四位数得到差,再按上面的方法处理,经有限次运算,最后的结果总是6174,试编程验证。[em18]
回复列表 (共10个回复)
沙发
蓝莎菲莹 [专家分:370] 发布于 2007-03-29 18:55:00
CLS
INPUT N
10 A(1) = N \ 1000: A(2) = N \ 100 MOD 10
A(3) = N \ 10 MOD 10: A(4) = N MOD 10
FOR I = 1 TO 3: FOR J = I + 1 TO 4
IF A(I) < A(J) THEN SWAP A(I), A(J)
NEXT J, I
X = A(1) * 1000 + A(2) * 100 + A(3) * 10 + A(4)
IF A(4) = 0 THEN
Y = A(3) * 1000 + A(2) * 10 + A(1)
ELSE Y = A(4) * 1000 + A(3) * 100 + A(2) * 10 + A(1)
END IF: K = K + 1
N = X - Y
PRINT X; Y; N
IF N = 6174 THEN PRINT "STEP="; K: END ELSE 10
END
板凳
小精灵LS [专家分:580] 发布于 2007-04-04 16:48:00
CLS
10 INPUT A
A(1) = A \ 1000: A(2) = A \ 100 MOD 10: A(3) = A \ 10 MOD 10: A(4) = A MOD 10
IF A(1) = A(2) AND A(1) = A(3) AND A(1) = A(4) THEN 10
DO
A(1) = A \ 1000: A(2) = A \ 100 MOD 10
A(3) = A \ 10 MOD 10: A(4) = A MOD 10
FOR I = 1 TO 3: FOR J = I + 1 TO 4
IF A(I) < A(J) THEN SWAP A(I), A(J)
NEXT J, I
X = A(1) * 1000 + A(2) * 100 + A(3) * 10 + A(4): PRINT X;
IF A(4) = 0 THEN
Y = A(3) * 1000 + A(2) * 10 + A(1)
ELSE
Y = A(4) * 1000 + A(3) * 100 + A(2) * 10 + A(1)
END IF
PRINT Y
A = X - Y: B = B + 1
LOOP UNTIL A = 6174
PRINT "STEP="; B
END
3 楼
超人hj [专家分:30] 发布于 2007-04-04 17:27:00
CLS
10 INPUT A
A(1) = A \ 1000: A(2) = A \ 100 MOD 10: A(3) = A \ 10 MOD 10: A(4) = A MOD 10
IF A(1) = A(2) AND A(1) = A(3) AND A(1) = A(4) THEN 10
DO
A(1) = A \ 1000: A(2) = A \ 100 MOD 10
A(3) = A \ 10 MOD 10: A(4) = A MOD 10
FOR I = 1 TO 3: FOR J = I + 1 TO 4
IF A(I) < A(J) THEN SWAP A(I), A(J)
NEXT J, I
X = A(1) * 1000 + A(2) * 100 + A(3) * 10 + A(4): PRINT X;
IF A(4) = 0 THEN
Y = A(3) * 1000 + A(2) * 10 + A(1)
ELSE
Y = A(4) * 1000 + A(3) * 100 + A(2) * 10 + A(1)
END IF
PRINT Y
A = X - Y: B = B + 1
LOOP UNTIL A = 6174
PRINT "STEP="; B
END
4 楼
游戏之王 [专家分:540] 发布于 2007-04-04 17:30:00
CLS
10 INPUT A
A(1) = A \ 1000: A(2) = A \ 100 MOD 10: A(3) = A \ 10 MOD 10: A(4) = A MOD 10
IF A(1) = A(2) AND A(1) = A(3) AND A(1) = A(4) THEN 10
DO
A(1) = A \ 1000: A(2) = A \ 100 MOD 10
A(3) = A \ 10 MOD 10: A(4) = A MOD 10
FOR I = 1 TO 3: FOR J = I + 1 TO 4
IF A(I) < A(J) THEN SWAP A(I), A(J)
NEXT J, I
X = A(1) * 1000 + A(2) * 100 + A(3) * 10 + A(4): PRINT X;
IF A(4) = 0 THEN
Y = A(3) * 1000 + A(2) * 10 + A(1)
ELSE
Y = A(4) * 1000 + A(3) * 100 + A(2) * 10 + A(1)
END IF
PRINT Y
A = X - Y: B = B + 1
LOOP UNTIL A = 6174
PRINT "STEP="; B
END
5 楼
爱丽斯LING [专家分:560] 发布于 2007-04-05 17:27:00
CLS
INPUT N
10 A(1) = N \ 1000: A(2) = N \ 100 MOD 10
A(3) = N \ 10 MOD 10: A(4) = N MOD 10
FOR I = 1 TO 3: FOR J = I + 1 TO 4
IF A(I) < A(J) THEN SWAP A(I), A(J)
NEXT J, I
X = A(1) * 1000 + A(2) * 100 + A(3) * 10 + A(4)
IF A(4) = 0 THEN
Y = A(3) * 1000 + A(2) * 10 + A(1)
ELSE Y = A(4) * 1000 + A(3) * 100 + A(2) * 10 + A(1)
END IF: K = K + 1
N = X - Y
PRINT X; Y; N
IF N = 6174 THEN PRINT "STEP="; K: END ELSE 10
END
6 楼
Lovely哆啦 [专家分:1360] 发布于 2007-04-11 18:30:00
CLS
INPUT N
10 A(1) = N \ 1000: A(2) = N \ 100 MOD 10
A(3) = N \ 10 MOD 10: A(4) = N MOD 10
FOR I = 1 TO 3: FOR J = I + 1 TO 4
IF A(I) < A(J) THEN SWAP A(I), A(J)
NEXT J, I
X = A(1) * 1000 + A(2) * 100 + A(3) * 10 + A(4)
IF A(4) = 0 THEN
Y = A(3) * 1000 + A(2) * 10 + A(1)
ELSE Y = A(4) * 1000 + A(3) * 100 + A(2) * 10 + A(1)
END IF: K = K + 1
N = X - Y
PRINT X; Y; N
IF N = 6174 THEN PRINT "STEP="; K: END ELSE 10
END
7 楼
&佑慧妹妹& [专家分:660] 发布于 2007-04-11 20:23:00
CLS
INPUT N
10 A(1) = N \ 1000: A(2) = N \ 100 MOD 10
A(3) = N \ 10 MOD 10: A(4) = N MOD 10
FOR I = 1 TO 3: FOR J = I + 1 TO 4
IF A(I) < A(J) THEN SWAP A(I), A(J)
NEXT J, I
X = A(1) * 1000 + A(2) * 100 + A(3) * 10 + A(4)
IF A(4) = 0 THEN
Y = A(3) * 1000 + A(2) * 10 + A(1)
ELSE Y = A(4) * 1000 + A(3) * 100 + A(2) * 10 + A(1)
END IF: K = K + 1
N = X - Y
PRINT X; Y; N
IF N = 6174 THEN PRINT "STEP="; K: END ELSE 10
END
8 楼
hhhchy [专家分:300] 发布于 2007-04-13 16:35:00
CLS
INPUT N
10 A(1) = N \ 1000: A(2) = N \ 100 MOD 10
A(3) = N \ 10 MOD 10: A(4) = N MOD 10
FOR I = 1 TO 3: FOR J = I + 1 TO 4
IF A(I) < A(J) THEN SWAP A(I), A(J)
NEXT J, I
X = A(1) * 1000 + A(2) * 100 + A(3) * 10 + A(4)
IF A(4) = 0 THEN
Y = A(3) * 1000 + A(2) * 10 + A(1)
ELSE Y = A(4) * 1000 + A(3) * 100 + A(2) * 10 + A(1)
END IF: K = K + 1
N = X - Y
PRINT X; Y; N
IF N = 6174 THEN PRINT "STEP="; K: END ELSE 10
END
[em1][em2][em3][em7][em16][em18]
9 楼
Matodied [专家分:7560] 发布于 2007-04-22 10:31:00
我在佑慧妹妹的《还是一个很老的问题,可惜在沉帖里,我没找到》里已经回复了。
大家都没想到我会用字符串做吧!
CLS
INPUT n$
DIM a$(4)
1 FOR i=1 TO 4:a$(i)=MID$(n$,i,1):NEXT i
FOR i=1 TO 3:FOR j=i+1 TO 4
IF a$(i)<a$(j) THEN SWAP a$(i),a$(j)
NEXT j,i
a1=VAL(a$(1)+a$(2)+a$(3)+a$(4))
a2=VAL(a$(4)+a$(3)+a$(2)+a$(1))
PRINT a1;"-";a2;"=";a1-a2
IF a1-a2=6174 THEN END
n$=LTRIM$(STR$(a1-a2))
n$=n$+STRING$(4-LEN(n$),"0"):GOTO 1
END
10 楼
Matodied [专家分:7560] 发布于 2007-04-22 10:35:00
[em9][em9][em9][em9][em9]真气人!
我来回复