主题:编程题
幽灵密码
[专家分:3510] 发布于 2010-05-25 14:11:00
1、数学黑洞6174
已知:一个任意的四位正整数。将数字重新组合成一个最大的数和最小的数相减,重复这个过程,最多七步,必得6174。即:7641-1467=6174。将永远出不来。
求证:所有四位数数字(全相同的除外),均能得到6174。输出掉进黑洞的步数。
2、输入10个学生的姓名,编一程序将它们按字母的顺序排列。
3、输入一个十进制数,将其转换成二进制数。
4、将字符串中的大写字母转换成小写字母,并反相输出。
如输入'abcABC234!$',输出为'$!432cbacba'
5、从屏幕上输入一个多位自然数,然后将各位重新排列成一个仍由原来的那些数字组成的位数不变的最大数和最小数。
回复列表 (共35个回复)
31 楼
verysmartboy [专家分:1260] 发布于 2011-07-23 12:55:00
你暴露了姜老师的性别
33 楼
idealguy [专家分:110] 发布于 2011-11-12 23:29:00
第一题,既然是求证,就必须计算所有的可能,而不是随机算一个了事。
34 楼
幽灵密码 [专家分:3510] 发布于 2012-03-09 19:23:00
原题意思是输入一个数,然后通过计算得到6174
CLS
GOTO 2
1 PRINT "Data error!"
2 DO
INPUT n
LOOP UNTIL n > 999 AND n < 10000
n$ = LTRIM$(STR$(n))
FOR i = 1 TO 4
a$(i) = MID$(n$, i, 1)
NEXT i
k = 0
FOR i = 1 TO 3
FOR j = i + 1 TO 4
IF a$(i) <> a$(j) THEN k = 1
NEXT j, i
IF k = 0 THEN 1
DO
p = p + 1
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
max = VAL(a$(1) + a$(2) + a$(3) + a$(4))
e = 4
DO UNTIL a$(e) <> "0"
e = e - 1
LOOP
SWAP a$(4), a$(e)
min = VAL(a$(4) + a$(3) + a$(2) + a$(1))
c = max - min
PRINT p; max; "-"; min; "="; c
n$ = LTRIM$(STR$(c))
FOR i = 1 TO 4
a$(i) = MID$(n$, i, 1)
NEXT i
LOOP UNTIL c = 6174
PRINT p
END
35 楼
idealguy [专家分:110] 发布于 2012-03-21 23:07:00
第一题全验证
[font=宋体]
[code]
DECLARE FUNCTION Ck& (i&)
DEFLNG A-Z
N = 0
FOR i = 1 TO 9999
IF (i \ 1111) * 1111 <> i THEN
P = Ck(Ck(Ck(Ck(Ck(Ck(Ck(i)))))))
IF P <> 6174 THEN
PRINT i; " does't conform to the rules!"
N = N + 1
END IF
END IF
NEXT i
IF N = 0 THEN
PRINT "Everything is OK!"
END IF
End
FUNCTION Ck (i)
DIM D(9)
i1 = i
Ck = 0
FOR j = 1 TO 4
i2 = i1 MOD 10
D(i2) = D(i2) + 1
IF D(i2) = 4 THEN EXIT FUNCTION
i1 = i1 \ 10
NEXT j
Pi = 0: Pm = 0
C = 1
FOR j = 0 TO 9
WHILE D(j) > 0
Pi = Pi * 10 + j
Pm = Pm + j * C: C = C * 10
D(j) = D(j) - 1
WEND
NEXT j
Ck = Pm - Pi
END FUNCTION
[/code]
[/font]
我来回复