主题:高精度乘法(加分)
QB阿呆
[专家分:0] 发布于 2007-08-30 09:23:00
高精度乘法怎么编?[em18][em18][em10][em10]
回复列表 (共3个回复)
沙发
QB爱好者 [专家分:370] 发布于 2007-08-30 09:37:00
如下:
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
板凳
Matodied [专家分:7560] 发布于 2007-08-30 14:04:00
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 楼
wzc1996 [专家分:1680] 发布于 2007-08-30 20:42:00
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
我来回复