jzoj【2014.8.17 NOIP普及グループシミュレーション】雄牛数学

6084 ワード

【2014.8.17 NOIP普及グループシミュレーション】雄牛数学(bullmath.pas/c/cpp)(File IO):input:bullmath.in output:bullmath.out
時間制限:
1000 msのスペース制限:
128,000 KB詳細制限
Goto ProblemSet
タイトルの説明
雄牛は数学の面で乳牛より多く、大きな整数間の乗算を計算できると自称し、正確な結果を得た.農夫のジョンは彼らの答えが正しいかどうかを知りたい.彼が雄牛の答えをチェックするのを手伝ってください.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.