现在的位置: 首页 > 综合 > 正文

poj1503

2018年04月26日 ⁄ 综合 ⁄ 共 609字 ⁄ 字号 评论关闭

【题意】

给定不超过100个不超过100位的正整数,求和

【输入】

每行一个数

数据以一行0结束

【输出】

输出所有数的和

高精度加法

program poj1503;
type
  bigint=array [0..1001] of longint;
var
  i,j,k:longint;
  ans,temp:bigint;
  s:string;

procedure plus (var a,b:bigint);
var
  i,k:longint;
begin
  if a[0]>b[0] then k:=a[0]
               else k:=b[0];
  i:=1;
  while (i<=k)or(a[i]<>0) do
    begin
      a[i]:=a[i]+b[i];
      a[i+1]:=a[i+1]+a[i] div 10;
      a[i]:=a[i] mod 10;
      inc(i);
    end;
  dec(i);
  a[0]:=i;
end;

begin
  ans[0]:=1;
  repeat
    readln(s);
    if s='0' then break;
    while s[1]='0' do delete(s,1,1);
    fillchar(temp,sizeof(temp),0);
    for i:=1 to length(s) do
      temp[i]:=ord(s[length(s)-i+1])-48;
    temp[0]:=length(s);
    plus(ans,temp);
  until false;
  for i:=ans[0] downto 1 do
    write(ans[i]);
  writeln;
end.
【上篇】
【下篇】

抱歉!评论已关闭.