简单高精: { Author:wzx961008 Problem:UVa 10035-Primary Arithmetic Verdict:Accepted Language:PASCAL Run Time:0.032s Submission Date:2011-01-14 01:44:21 } uses math; var s1,s2:string; c:char; i,add,tot:longint; begin while true do begin s1:=''; s2:=''; while true do begin read(c); if c=' ' then break; s1:=c+s1; end; while not eoln do begin read(c); s2:=c+s2; end; if (s1='0')and(s2='0') then break; add:=0; tot:=0; if length(s1)<length(s2) then for i:=length(s1)+1 to length(s2) do s1:=s1+'0' else for i:=length(s2)+1 to length(s1) do s2:=s2+'0'; i:=0; repeat inc(i); if (ord(s1[i])-48)+(ord(s2[i])-48)+add>=10 then begin add:=1; inc(tot); end else add:=0; if i=length(s1) then break; until false; if tot=0 then writeln('No carry operation.'); if tot=1 then writeln('1 carry operation.'); if tot>1 then writeln(tot,' carry operations.'); readln; end; end.