美文网首页
高精度数(大整数)加法

高精度数(大整数)加法

作者: 朱红_fc5d | 来源:发表于2019-05-21 21:18 被阅读0次

高精度数的加法

什么是高精度数?

高精度数是指一种数据范围超过long long 的数。


题目描述

求两个不超过200位的非负整数的和。

输入

有2行,每行是一个不超过200位的正整数。

注意!输入中可能有多余的前导0。

输出

一行,即输入的两个高精度数相加的结果,结果里不能有多余的前导0。


代码

#include<iostream>

#include<string>   //使用string类型数据需要用到该头文件

using namespace std;

int main(){

string a,b;

int ar[201]={0},br[201]={0},cr[201]={0},c[201]={0},aLen,bLen,maxLen;

cin>>a>>b;//输入两个高精度数,分别存放在字符串a和b中

aLen=a.length();//字符串a的长度

bLen=b.length();//字符串b的长度

maxLen=max(aLen,bLen);//更大的那个长度,作为结果的长度

for(int i=0;i<aLen;i++){

   ar[i]=a[aLen-i-1]-'0';  //将字符串a逆序存储在ar中,-'0'是因为'0'有值,如果不减,会造成计算错误

}

for(int i=0;i<bLen;i++){

   br[i]=b[bLen-i-1]-'0';//将字符串b逆序存储在br中,-'0'是因为'0'有值,如果不减,会造成计算错误

}

for(int i=0;i<maxLen;i++){

   cr[i]+=ar[i]+br[i];  //相加

   cr[i+1]=cr[i]/10;  //进位

   cr[i]%=10;  //确保自己结果不大于10

}

maxLen++;  //考虑最高位有进位的情况

while(1){  //去0

   if(cr[maxLen-1]>0 || maxLen==1){  // 如果不为0

        break;

   }

   maxLen--;

}

for(int i=0;i<maxLen;i++){//将结果还原成正序

   c[i]=cr[maxLen-i-1];

}

for(int i=0;i<maxLen;i++){//输出结果

   cout<<c[i];

}

cout<<endl;

return 0;

}


关键点解析

关键点1:倒序时,c[i]=cr[maxLen-i-1]。


示意图,证明公式

关键点2:输入数据要存入string型变量,如果用整型变量存储的话,会出现数据溢出的情况。

例如输入:

2222222222222222222222222222222222

3333333333333333333333333333333333

关键点3:要考虑结果为0的情况,输出为0。


测试样例

输入样例1:

9

99

输出样例1:

108

输入样例2:

0099

000009

输出样例2:

108

输入样例3:

222222222222222222222

333333333333333333333

输出样例3:

555555555555555555555

输入样例4:

00

000

输出样例4:

0

相关文章

  • 高精度数(大整数)乘法

    大整数乘法 上一期(高精度加法)今天我们来研讨一下高精度乘法。 题目描述:将两个大整数(最多100位)相乘,输出结...

  • 高精度数(大整数)加法

    高精度数的加法 什么是高精度数? 高精度数是指一种数据范围超过long long 的数。 题目描述 求两个不超过2...

  • 高精度加法(C++实现)

    高精度加法 简介 用于计算含有超过一般变量存放不下的非负整数 高精度加法这个过程是模拟的小学竖式加法计算 步骤 以...

  • 上交OJ-1014. 高精度加法

    1014. 高精度加法 Description 输入2个整数a和b,输出a+b。 Input Format 输入有...

  • 高精度(加法&乘法&减法)

    高精度加法: 高精度乘法: 高精度减法:

  • 大整数加法

    题目地址:http://noi.openjudge.cn/ch0106/10/题目:总时间限制: 1000ms 内...

  • 大整数加法

  • 大整数加法

    时间限制:3000 ms | 内存限制:65535 KB | 难度:3 描述 I have a very si...

  • lq_jichu_Main29&Main30(大数问题)

    大数问题 Mian29(高精度加法): 问题描述 输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。...

  • 高精度减法(C++实现)

    高精度减法 简介 用于计算含有超过一般变量存放不下的非负整数 高精度加法这个过程是模拟的小学竖式减法计算 注:在本...

网友评论

      本文标题:高精度数(大整数)加法

      本文链接:https://www.haomeiwen.com/subject/egyszqtx.html