高精度加法

原创 2015年07月10日 09:47:00
代码一:program gaojingjia;
const max=200;
var
  sa,sb:string;
  b:array[1..max] of integer;
  a:array[1..max+1] of integer;
  len,la,lb, i:integer;
begin
readln(sa); readln(sb);
fillchar(a,sizeof(a),0);  fillchar(b,sizeof(b),0);
la:=length(sa); lb:=length(sb);
for i:= la downto 1 do  a[la-i+1]:=ord(sa[i])-ord('0');
for i:= lb downto 1 do  b[lb-i+1]:=ord(sb[i])-ord('0');
if  la>lb then len:=la  else  len:=lb;
for i:=1 to len do
begin
      a[i+1]:=a[i+1]+(a[i]+b[i]) div 10;
      a[i]:=(a[i]+b[i]) mod 10;
    end;
if a[len+1]>0 then  len:=len+1;
for i:=len downto 1 do  write(a[i]);
writeln
end.
代码二:const
  size= 200+1;
type
    hugeint = Record
        len : Integer;
        num : Array[1..size] Of Integer;
    End;
var a,b:hugeint;
    s1,s2:string;
    i:integer;
procedure add(a, b : hugeint);
    Var
        i : Integer;
        ans : hugeint;
    begin
        FillChar(ans.num, SizeOf(ans.num), 0);
        If a.len > b.len
            then ans.len := a.len

            else ans.len := b.len;
        for i := 1 To ans.len Do
            begin
                ans.num[i] :=ans.num[i]+a.num[i]+b.num[i];
                ans.num[i + 1] := ans.num[i + 1] + ans.num[i] div 10;
                ans.num[i] := ans.num[i] mod 10;
            end;
        If ans.num[ans.len + 1] > 0
            Then Inc(ans.len);
        for i:=ans.len downto 1 do write(ans.num[i]);
        writeln;
    end;
   procedure datain;
   begin
    //assign(input,'highplus.in');  assign(output,'highplus.out');
    //reset(input); rewrite(output);
    readln(s1);
    readln(s2);
    a.len:=length(s1);
    b.len:=length(s2);
    for i:=1 to a.len do  a.num[i]:=ord(s1[a.len-i+1])-ord('0');
    for i:=1 to b.len do  b.num[i]:=ord(s2[b.len-i+1])-ord('0');
   end;
   begin
    datain;
     add(a,b);
   //close(input);close(output);
end.
版权声明:本文为博主原创文章,未经博主允许不得转载。

蓝桥杯基础练习 高精度加法 (简单模拟)

Link:http://lx.lanqiao.org/problem.page?gpid=T70 基础练习 高精度加法   时间限制:1.0s   内存限制:512.0MB...
  • Enjoying_Science
  • Enjoying_Science
  • 2016年01月28日 17:41
  • 1280

高精度加法(可以为负数)【C++版和java版】

高精度加法: 两个整数相加: #include #include using namespace std; const int MAX=1001; void big_add(char ...
  • AC_Gibson
  • AC_Gibson
  • 2014年08月05日 11:51
  • 720

蓝桥杯:高精度加法

题目: 输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。 算法描述   由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。   ...
  • JDOUN
  • JDOUN
  • 2016年03月08日 21:07
  • 1523

java 写 高精度加法 HDU1002

import java.util.*; import java.math.*; import java.io.*; public class Main { publ...
  • acmjk
  • acmjk
  • 2013年05月07日 15:56
  • 1886

蓝桥杯:高精度加法

问题描述   输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。 算法描述   由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。 ...
  • lc0817
  • lc0817
  • 2015年02月08日 15:57
  • 1594

蓝桥杯基础练习 高精度加法

#include #include #include #include #include using namespace std; //全局变量在没有赋值以前系统默认为0,而局部变量在没有...
  • Cui_csdn
  • Cui_csdn
  • 2017年02月04日 12:09
  • 428

蓝桥杯 基础练习 高精度加法

问题描述   输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。 算法描述   由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数...
  • sinat_36570284
  • sinat_36570284
  • 2016年12月08日 19:36
  • 183

高精度-加法

#include #include #include #include #include using namespace std; #define MAX 1010 int a[MAX], b[MAX...
  • acm_JL
  • acm_JL
  • 2016年03月22日 22:14
  • 281

蓝桥杯练习--高精度加法

问题描述   输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。 算法描述   由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。   定...
  • coding_debug
  • coding_debug
  • 2015年12月23日 22:09
  • 746

蓝桥-基础练习29-高精度加法-java代码

问题描述   输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。 算法描述   由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。 ...
  • aa8568849
  • aa8568849
  • 2017年03月13日 16:13
  • 637
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:高精度加法
举报原因:
原因补充:

(最多只允许输入30个字)