首页 > 编程语言 > 详细

【C++大整数/高精度专题】

时间:2020-04-19 17:37:14      阅读:61      评论:0      收藏:0      [点我收藏+]

大整数加法

题目描述

实现一个加法器,使其能够输出a+b的值。

输入描述:

输入包括两个数a和b,其中a和b的位数不超过1000位。

输出描述:

可能有多组测试数据,对于每组数据,
输出a+b的值。
示例1

输入

2 6
10000000000000000000 10000000000000000000000000000000

输出

8
10000000000010000000000000000000
思路:翻转=》字符串转为整数=》倒序相加=》从第一个不是0的位置倒序输出。
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int main(){
 4     string a,b;
 5     while(cin>>a>>b){
 6         reverse(a.begin(),a.end());
 7         reverse(b.begin(),b.end());
 8         int a1[1000]={0},b1[1000]={0},sum[1005]={0};
 9         for(int i=0;i<a.size();i++){
10             a1[i]=a[i]-0;
11         }
12         for(int i=0;i<b.size();i++){
13             b1[i]=b[i]-0;
14         }
15         int jinwei=0;
16         for(int i=0;i<a.size()||i<b.size();i++){
17             if(a1[i]+b1[i]+jinwei<10){
18                 sum[i]=a1[i]+b1[i]+jinwei;
19                 jinwei=0;
20             }else{
21                 sum[i]=(a1[i]+b1[i]+jinwei)%10;
22                 jinwei=(a1[i]+b1[i]+jinwei)/10;
23             }
24         }
25         int flag=0;
26         int len=a.size()>b.size()?a.size()+2:b.size()+2;
27         for(int i=len;i>=0;i--){
28             if(sum[i]!=0) flag=1;
29             if(flag==1) cout<<sum[i];
30         }
31         cout<<endl;
32     }
33     return 0;
34 }

 

【C++大整数/高精度专题】

原文:https://www.cnblogs.com/YanShaoDian/p/12732434.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!