ex.dpr
来自「tongji acm-online judge solution」· DPR 代码 · 共 79 行
DPR
79 行
program Ural_1248(Input,Output);
const
MaxLen=100+20;
type
TIndex=Longint;
THP=array[-MaxLen..MaxLen]of ShortInt;
procedure IncHP(var A:THP;const B:THP);
var
i:TIndex;
R:TIndex;
begin
R:=0;
for i:=-MaxLen to MaxLen do
begin
Inc(A[i],B[i]+R);
R:=0;
if A[i]>9 then
begin
Dec(A[i],10);
R:=1;
end;
end;
end;
procedure Main;
var
N:TIndex;
E:TIndex;
St:String;
Sum,Cur:THP;
i:TIndex;
Code:Integer;
begin
Readln(N);
FillChar(Sum,SizeOf(Sum),0);
while N>0 do
begin
Dec(N);
//Str to HP
Readln(St);
if Pos('E',St)>0 then St[Pos('E',St)]:='e';
if Pos('e',St)=0 then
E:=0
else
begin
Val(Copy(St,Pos('e',St)+1,Length(St)-Pos('e',St)),E,Code);
Delete(St,Pos('e',St),Length(St)-Pos('e',St)+1);
end;
if Pos('.',St)>0 then
begin
Dec(E,Length(St)-Pos('.',St));
Delete(St,Pos('.',St),1);
end;
FillChar(Cur,SizeOf(Cur),0);
for i:=1 to Length(St) do
Cur[E+i-1]:=Ord(St[Length(St)-i+1])-Ord('0');
//Calculate
IncHP(Sum,Cur);
end;
E:=MaxLen;
while Sum[E]=0 do Dec(E); //it's impossible than Sum=0 Writeln('0.000000000000000000e0')
//Round
if Sum[E-19]>4 then
begin
FillChar(Cur,SizeOf(Cur),0);
Cur[E-18]:=1;
IncHP(Sum,Cur);
//An important step, E may increase after round
while Sum[E]=0 do Inc(E);
end;
//Output
Write(Sum[E],'.');
for i:=1 to 18 do
Write(Sum[E-i]);
Writeln('e',E);
end;
begin
Main;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?