回 帖 发 新 帖 刷新版面

主题:求N!(答对30分)

求N!(N!=1*2*3*4*……*(N-2)*(N-1)*N)
例如:输入:N=11
     输出:11!= 39916800

回复列表 (共53个回复)

21 楼

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 楼

高精度
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 楼

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 楼

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 楼

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 楼


INPUT "n="; n
t = 1
FOR i = 1 TO n
 t= t * i
NEXT i
PRINT n; CHR$(29); "! =";t       
END
[em6]

27 楼


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 楼

[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 楼

303633407

30 楼

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

我来回复

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