回 帖 发 新 帖 刷新版面

主题:【求助】急!!!!!!!

输入两个小于10000000000000000000000的整数,用高精度算法求两数和。
(用字符串做)

回复列表 (共11个回复)

沙发

var
  s1,s2:string;
  i,j,k,l,l1,l2:integer;
  a:packed array[1..50] of integer;
  b:packed array[1..50] of integer;
  c:packed array[1..50] of integer;
begin 
  readln(s1);l1:=length(s1);
  readln(s2);l2:=length(s2);
  for i:=1 to l1 do a[i]:=ord(s1[l1+1-i])-48;
  for i:=1 to l2 do b[i]:=ord(s2[l2+1-i])-48;
  if l1>l2 then l:=l1 else l:=l2;
  for i:=1 to l do 
    begin 
      c[i]:=a[i]+b[i];
      c[i+1]:=c[i] div 10;
      c[i]:=c[i] mod 10;
    end;
  if c[l+1]<>0 then l:=l+1;
  for i:=l downto 1 do write(c[i]);
end.

板凳

这个程序在语法方面我不保证完全正确
因为不是在PASCAL环境下
无法编译
所以你自己检查语法问题吧

3 楼

[url=http://upload.programfan.com/upfile/200703181422779.rar]高精度加减乘法运算[/url]

4 楼

我试了,不对!

5 楼

来帮帮我吧!

6 楼

不是吧???

7 楼

理应说CXY的程序没有错误
可具体我也不知道哪里是错了

8 楼

我知道了!
 c[i]:=a[i]+b[i];
      c[i+1]:=c[i] div 10;
      c[i]:=c[i] mod 10;
进位错了!c[i]:=a[i]+b[i];使原有进位数消失了!

9 楼

我的BLOG里面有高精度算法的代码以及其它一些算法的代码,感兴趣的朋友可以去看看.

http://blog.sina.com.cn/ufownl

10 楼

var
  s1,s2:string;
  i,j,k,l,l1,l2:integer;
  a:packed array[1..50] of integer;
  b:packed array[1..50] of integer;
  c:packed array[1..50] of integer;
begin 
  readln(s1);l1:=length(s1);
  readln(s2);l2:=length(s2);
  for i:=1 to l1 do a[i]:=ord(s1[l1+1-i])-48;
  for i:=1 to l2 do b[i]:=ord(s2[l2+1-i])-48;
  if l1>l2 then l:=l1 else l:=l2;
  for i:=1 to l do 
    begin 
      c[i]:=a[i]+b[i];
      c[i+1]:=c[i] div 10;
      c[i]:=c[i] mod 10;
    end;
  if c[l+1]<>0 then l:=l+1;
  for i:=l downto 1 do write(c[i]);
end.

我来回复

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