jzoj 【2014.8.17NOIP普及组模拟】公牛数学

题目描述

     公牛在数学方面比奶牛很多,他们自称可以计算很大的整数之间的乘法,并得到精确的结果。农夫约翰想知道他们的答案是否正确。请你帮助他检查公牛的答案。读入2个正整数(不大于10^40),计算他们的乘积,输出一个自然数(不能含有多余的零)。

     约翰农夫让你自己做这个工作。

高精度乘法。。。

const
  maxn=100;
var
  s1,s2:string;
  len1,len2:longint;
  a,b:array[1..maxn] of longint;
  c:array[1..2*maxn] of longint;

procedure init;
var
  i,j:longint;
begin
  fillchar(c,sizeof(c),0);
  readln(s1);
  readln(s2);
  len1:=length(s1);
  len2:=length(s2);
  for i:=1 to len1 do
    a[len1-i+1]:=ord(s1[i])-48;
  for i:=1 to len2 do
    b[len2-i+1]:=ord(s2[i])-48;
end;

procedure mul;
var
  i,j:longint;
begin
  for i:=1 to maxn do
    for j:=1 to maxn do
      begin
        c[i+j-1]:=a[i]*b[j]+c[i+j-1];
        c[i+j]:=c[i+j-1] div 10+c[i+j];
        c[i+j-1]:=c[i+j-1] mod 10;
      end;
end;

procedure print;
var
  i,j:longint;
begin
  j:=2*maxn;
  while (c[j]=0) and (j>1) do dec(j);
  for i:=j downto 1 do
    write(c[i]);
end;

begin
  assign(input,'bullmath.in'); reset(input);
  assign(output,'bullmath.out');rewrite(output);
  init;
  mul;
  print;
  close(input);close(output);
end.


你可能感兴趣的:(高精度)