回 帖 发 新 帖 刷新版面

主题:帮忙解一道题,急用!加分

要高精度加法的程序阿!!哪位高手帮帮忙。。。。
   这里随便给两个加数:
   7684684684653228+13548976542386698=?[em18]

回复列表 (共5个回复)

沙发

http://noi.gnzx.gd.cn/html/2004-11/157.htm


program sum;
var s,s1,s2:string;
    a,b,c:array [1..260] of integer;
    i,l,k1,k2:integer;
begin
     write('input s1:');readln(s1);
     write('input s2:');readln(s2);
         l:=length(s1);
     k1:=260;
     for i:=l downto 1 do
     begin
          a[k1]:=ord(s1[i])-48;
          k1:=k1-1; 
     end; 
     k1:=k1+1;

    l:=length(s2);
     k2:=260;
     for i:=l downto 1 do
     begin
          b[k2]:=ord(s2[i])-48;
          k2:=k2-1; 
     end; 
     k2:=k2+1; 

    if k1>k2 then k:=k2 else k:=k1;
     y:=0;
     for i:=260 downto k do
     begin
         x:=a[i]+b[i]+y;
         c[i]:=x mod 10;
         y:=x div 10;
     end;
    if y<>0 then begin k:=k-1;c[k]:=y; 
end;
     for i:=k to 260 do write(c[i]);
     writeln; 
end. 

加分哦!!

板凳

[url=http://upload.programfan.com/upfile/200607011358292.rar]这个可以用小数,负数[/url]

3 楼

注:
打印用HPNToStr

4 楼

用2个数组就行了
很简单的

5 楼

如果只是俩正整数那么只这么7行就行了:
{ }  var
{1}    a,b:string;
{2}    i:integer;
{ }begin
{3}  readln(a);
{4}  readln(b);
{5}  if length(a)>length(b) then
       for i:=1 to length(a)-length(b) do insert('0',b,1)
       else for i:=1 to length(b)-length(a) do insert('0',a,1);
{6}  for i:=1 to length(a) do a[i]:=chr(ord(a[i])+ord(b[i])-ord('0'));
{7}  for i:=1 to length(a) do
       if (i=1) and (ord(a[i])-48+ord(a[i+1]>'9')>9)
         then write(ord(a[i])-48+ord(a[i+1]>'9'))
         else write((ord(a[i])-48+ord(a[i+1]>'9')) mod 10)
{ }end.

我来回复

您尚未登录,请登录后再回复。点此登录或注册