主题:求N!(答对30分)
LSQ
[专家分:220] 发布于 2006-02-10 18:27:00
求N!(N!=1*2*3*4*……*(N-2)*(N-1)*N)
例如:输入:N=11
输出:11!= 39916800
回复列表 (共53个回复)
21 楼
chyx [专家分:450] 发布于 2007-03-23 18:18:00
CLS
INPUT N
DIM a(1000), b(1000), c(1000)
b$ = "1"
WHILE s <> N
s = s + 1
a$ = LTRIM$(STR$(s))
la = LEN(a$): lb = LEN(b$): lc = la + lb
FOR i = 1 TO la: a(i) = VAL(MID$(a$, la + 1 - i, 1)): NEXT i
FOR i = 1 TO lb: b(i) = VAL(MID$(b$, lb + 1 - i, 1)): NEXT i
b$ = ""
FOR i = 1 TO la: FOR j = 1 TO lb
x = a(i) * b(j): w = i + j - 1
c(w) = c(w) + x MOD 10
c(w + 1) = c(w + 1) + c(w) \ 10 + x \ 10
c(w) = c(w) MOD 10
NEXT j, i
WHILE c(lc) = 0 AND lc > 1: lc = lc - 1: WEND
FOR i = lc TO 1 STEP -1: b$ = b$ + LTRIM$(STR$(c(i))): NEXT i
FOR i = 1 TO lc: c(i) = 0: NEXT i
WEND
PRINT b$
22 楼
chyx [专家分:450] 发布于 2007-03-23 18:19:00
高精度
CLS
INPUT N
DIM a(1000), b(1000), c(1000)
b$ = "1"
WHILE s <> N
s = s + 1
a$ = LTRIM$(STR$(s))
la = LEN(a$): lb = LEN(b$): lc = la + lb
FOR i = 1 TO la: a(i) = VAL(MID$(a$, la + 1 - i, 1)): NEXT i
FOR i = 1 TO lb: b(i) = VAL(MID$(b$, lb + 1 - i, 1)): NEXT i
b$ = ""
FOR i = 1 TO la: FOR j = 1 TO lb
x = a(i) * b(j): w = i + j - 1
c(w) = c(w) + x MOD 10
c(w + 1) = c(w + 1) + c(w) \ 10 + x \ 10
c(w) = c(w) MOD 10
NEXT j, i
WHILE c(lc) = 0 AND lc > 1: lc = lc - 1: WEND
FOR i = lc TO 1 STEP -1: b$ = b$ + LTRIM$(STR$(c(i))): NEXT i
FOR i = 1 TO lc: c(i) = 0: NEXT i
WEND
PRINT b$
23 楼
爱丽斯LING [专家分:560] 发布于 2007-03-23 19:26:00
INPUT "n="; n
mul = 1
FOR i = 1 TO n
mul = mul * i
NEXT i
PRINT n; CHR$(29); "! ="; mul 'chr$(29) is backspace
END
24 楼
蓝莎菲莹 [专家分:370] 发布于 2007-03-29 18:58:00
INPUT "n="; n
mul = 1
FOR i = 1 TO n
mul = mul * i
NEXT i
PRINT n; CHR$(29); "! ="; mul 'chr$(29) is backspace
END
25 楼
小精灵LS [专家分:580] 发布于 2007-03-30 16:46:00
CLS
INPUT N: B$ = "1"
DIM A(1000), B(1001), C(1009)
B = LEN(B$): LC = LA + LB
FOR K = 1 TO N
A$ = LTRIM$(STR$(M))
S = S + 1: LA = LEN(A$)
LB = LEN(B$): LC = LA + LB
FOR I = 1 TO LA: A(I) = VAL(MID$(A$, LA + 1 - I, 1)): NEXT I
FOR I = 1 TO LB: B(I) = VAL(MID$(B$, LB + 1 - I, 1)): NEXT I: B$ = ""
FOR I = 1 TO LA: FOR J = 1 TO LB
X = K * B(J): W = I + J - 1
C(W) = C(W) + X MOD 10
C(W + 1) = C(W + 1) + C(W) \ 10 + X \ 10
C(W) = C(W) MOD 10
NEXT J, I
WHILE C(LC) = 0 AND LC > 1: LC = LC - 1: WEND
FOR I = LC TO 1 STEP -1: B$ = B$ + LTRIM$(STR$(C(I))): NEXT I
FOR I = LC TO 1 STEP -1: C(I) = 0: NEXT I
NEXT K
PRINT STR$(N) + "!=" + B$
END
26 楼
黑白猪-- [专家分:420] 发布于 2007-04-01 16:54:00
INPUT "n="; n
t = 1
FOR i = 1 TO n
t= t * i
NEXT i
PRINT n; CHR$(29); "! =";t
END
[em6]
27 楼
黑白猪-- [专家分:420] 发布于 2007-04-01 16:55:00
INPUT "n="; n
mul = 1
FOR i = 1 TO n
mul = mul * i
NEXT i
PRINT n; CHR$(29); "! ="; mul 'chr$(29) is backspace
END
28 楼
蓝色旋5421 [专家分:0] 发布于 2007-04-02 12:56:00
[quote]INPUT "n="; n
mul = 1
FOR i = 1 TO n
mul = mul * i
NEXT i
PRINT n; CHR$(29); "! ="; mul 'chr$(29) is backspace
END[/quote]
29 楼
蓝色旋5421 [专家分:0] 发布于 2007-04-02 12:57:00
303633407
30 楼
小精灵LS [专家分:580] 发布于 2007-04-04 16:36:00
CLS
INPUT N: B$ = "1"
DIM A(1000), B(1001), C(1009)
B = LEN(B$): LC = LA + LB
FOR K = 1 TO N
A$ = LTRIM$(STR$(M))
S = S + 1: LA = LEN(A$)
LB = LEN(B$): LC = LA + LB
FOR I = 1 TO LA: A(I) = VAL(MID$(A$, LA + 1 - I, 1)): NEXT I
FOR I = 1 TO LB: B(I) = VAL(MID$(B$, LB + 1 - I, 1)): NEXT I: B$ = ""
FOR I = 1 TO LA: FOR J = 1 TO LB
X = K * B(J): W = I + J - 1
C(W) = C(W) + X MOD 10
C(W + 1) = C(W + 1) + C(W) \ 10 + X \ 10
C(W) = C(W) MOD 10
NEXT J, I
WHILE C(LC) = 0 AND LC > 1: LC = LC - 1: WEND
FOR I = LC TO 1 STEP -1: B$ = B$ + LTRIM$(STR$(C(I))): NEXT I
FOR I = LC TO 1 STEP -1: C(I) = 0: NEXT I
NEXT K
PRINT STR$(N) + "!=" + B$
END
我来回复