高精度加法

题目描述

高精度加法,x相当于a+b problem,[b][color=red]不用考虑负数[/color][/b]

输入输出格式

输入格式:

分两行输入a,b<=10^500

输出格式:

输出只有一行,代表A+B的值

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
char a1[100001],b1[100001];
int a[100001],b[100001];
int ans[100001];
int x;
int main()
{
scanf("%s %s",a1,b1);
int la=strlen(a1);
int lb=strlen(b1);
for(int i=0;i<la;i++)
a[i]=a1[la-i-1]-48;
for(int i=0;i<lb;i++)
b[i]=b1[lb-i-1]-48;
int i=0;
for(i=0;i<max(la,lb);i++)
{
ans[i]=(a[i]+b[i]+x)%10;
x=(a[i]+b[i]+x)/10;
}
ans[i]=x;
int lc=max(la,lb);
int flag=0;
for(int i=lc;i>=0;i--)
{
if(ans[i]==0&&flag==0&&i>0)
continue;
else flag=1;
printf("%d",ans[i]);
}
return 0;
}

其实高精加还可以单独列出一步进行进位运算,单独判断每一位,但没必要。。。

原文地址:https://www.cnblogs.com/648-233/p/10465668.html