p1040.pas

来自「www.vijos.cn上一些习题的参考源码」· PAS 代码 · 共 69 行

PAS
69
字号
program multiply;
type
	numtype=packed array[0..10000] of longint;
	st=ansistring;
var
	sa,sb:st;
	a,b:numtype;
	c:packed array[0..20000] of longint;
	
procedure hp_mul;
var
	i,j:longint;
begin
	for i:=1 to a[0] do begin
		for j:=1 to b[0] do begin
			inc(c[i+j-1],a[i]*b[j]);
			inc(c[i+j],c[i+j-1] div 10000);
			c[i+j-1]:=c[i+j-1] mod 10000;
		end;
	end;
	c[0]:=a[0]+b[0]+1;
	while(c[0]>1) and (c[c[0]]=0) do
		dec(c[0]);
end;

procedure trans(s:st;var a:numtype);
var
	k,code:integer;
	s1:st;
begin
	k:=length(s);
	a[0]:=0;
	repeat
		inc(a[0]);
		s1:=copy(s,k-3,4);
		val(s1,a[a[0]],code);
		s:=copy(s,1,k-4);
		k:=k-4;
	until k<=0;
end;

procedure print;
var
	i:longint;
begin
    write(c[c[0]]);
	for i:=c[0]-1downto 1 do begin
		if c[i]<1000 then write('0');
		if c[i]<100 then write('0');
		if c[i]<10 then write('0');
		write(c[i]);
	end;
	writeln;
end;

begin
	readln(sa);
	readln(sb);
	
	fillchar(a,sizeof(a),0);
	fillchar(b,sizeof(b),0);
	fillchar(c,sizeof(c),0);
	
	trans(sa,a);
	trans(sb,b);
	hp_mul;
	print;
end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?