回 帖 发 新 帖 刷新版面

主题:高精度乘法(加分)

高精度乘法怎么编?[em18][em18][em10][em10]

回复列表 (共3个回复)

沙发

如下:
CLS
INPUT "A,B=",A$,B$
LA=LEN(A$)
LB=LEN(B$)
DIM A(LA),B(LB),C(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
FOR I=1 TO LA
  FOR J=1 TO LB
    S = A(I) * B(J)
    W=I+J-1
    C(W)=C(W)+S MOD 10
    C(W+1)=C(W+1)+S\10+C(W)\10
    C(W)=C(W) MOD 10
NEXT J,I
H=LA+LB
DO WHILE C(H)=0 AND H>1
  H=H-1
LOOP
FOR I=H TO 1 STEP -1
  PRINT USING "#" ;C(I);
NEXT I
END

板凳

CLS
INPUT a$, b$
la = LEN(a$): lb = LEN(b$)
PRINT a$; "*"; b$; "=";
DIM a(la), b(lb), s(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
FOR i = 1 TO la: FOR j = 1 TO lb
    d = a(i) * b(j): v = i + j - 1
    s(v) = s(v) + d MOD 10
    s(v + 1) = s(v + 1) + s(v) \ 10 + d \ 10
    s(v) = s(v) MOD 10
NEXT j, i
IF s(la + lb) = 0 THEN ls = la + lb - 1 ELSE ls = la + lb
FOR i = ls TO 1 STEP -1
    PRINT RTRIM$(LTRIM$(STR$(s(i))));
NEXT i
END

楼下又是抄的。

3 楼

CLS
INPUT a$, b$
la = LEN(a$): lb = LEN(b$)
PRINT a$; "*"; b$; "=";
DIM a(la), b(lb), s(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
FOR i = 1 TO la: FOR j = 1 TO lb
    d = a(i) * b(j): v = i + j - 1
    s(v) = s(v) + d MOD 10
    s(v + 1) = s(v + 1) + s(v) \ 10 + d \ 10
    s(v) = s(v) MOD 10
NEXT j, i
IF s(la + lb) = 0 THEN ls = la + lb - 1 ELSE ls = la + lb
FOR i = ls TO 1 STEP -1
    PRINT RTRIM$(LTRIM$(STR$(s(i))));
NEXT i
END

我来回复

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