高精度乘法
2015-05-17 11:53
351 查看
方便调用,写成了函数
function gjdcf(s,ss:ansistring):ansistring;
var
d,temp:ansistring;
a,b,c:array[1..1000000]of longint;
q,i,j:longint;
begin
readln(s);
readln(ss);
for i:=1 to length(s) do
val(s[length(s)-i+1],a[i]);
for i:=1 to length(ss) do
val(ss[length(ss)-i+1],b[i]);
for i:=1 to length(s) do
for j:=1 to length(ss) do
c[i+j-1]:=c[i+j-1]+a[i]*b[j];
for i:=1 to length(s)+length(ss) do
if c[i]>=10 then begin c[i+1]:=c[i+1]+c[i] div 10;c[i]:=c[i]mod 10;end;
if c[length(s)+length(ss)]<>0 then q:=length(s)+length(ss) else q:=length(s)+length(ss)-1;
for i:=q downto 1 do
begin
str(c[i],temp);
d:=d+temp;
end;
exit(d);
end;
function gjdcf(s,ss:ansistring):ansistring;
var
d,temp:ansistring;
a,b,c:array[1..1000000]of longint;
q,i,j:longint;
begin
readln(s);
readln(ss);
for i:=1 to length(s) do
val(s[length(s)-i+1],a[i]);
for i:=1 to length(ss) do
val(ss[length(ss)-i+1],b[i]);
for i:=1 to length(s) do
for j:=1 to length(ss) do
c[i+j-1]:=c[i+j-1]+a[i]*b[j];
for i:=1 to length(s)+length(ss) do
if c[i]>=10 then begin c[i+1]:=c[i+1]+c[i] div 10;c[i]:=c[i]mod 10;end;
if c[length(s)+length(ss)]<>0 then q:=length(s)+length(ss) else q:=length(s)+length(ss)-1;
for i:=q downto 1 do
begin
str(c[i],temp);
d:=d+temp;
end;
exit(d);
end;
相关文章推荐
- 九度OJ 1076 N的阶乘 (高精度大数的乘法)
- voj1040 高精度乘法 多位
- BigInteger之高精度乘法
- CCF NOI1140 高精度乘法
- 花了近一天的时间写了小数的高精度乘法,并通过了POJ1001,颇有成就感。
- 高精度乘法
- p3117 高精度练习之乘法
- HDU 1063 / PKU 1001 (小数高精度乘法,JAVA写的)
- NOJ 1149高精度乘法(另含高精度加、减&除详解)
- 简单高精度乘法与简单高精度快速幂
- uva10106高精度乘法
- 【基础】高精度乘法
- hdu1402 A * B Problem Plus 高精度乘法 快速傅里叶变换(FFT)
- 高精度乘法
- C语言 · 高精度乘法
- poj 1001 高精度乘法
- ACM 3117 高精度练习之乘法(基础)
- code[vs] 3117 高精度练习之乘法
- 高精度乘法
- C语言中的高精度乘法