题目背景

题目描述

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

输入输出格式

输入格式:

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

输出格式:

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

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int c[10^500+1];
long long d,e,y,x,cnt,jw;
char a[10^500+1],b[10^500+1];
int main()
{
cin>>a>>b;
x=strlen(a);
y=strlen(b);
if(x>y)
{
cnt=x;
}
else
{
cnt=y;
}
for(d=0;d<=cnt-1;d++)
{
if(x-d-1<0||y-d-1<0)
{
if(x-d-1<0)
{
c[cnt-d]=b[y-d-1]-'0'+jw;
if(c[cnt-d]>=10)
{
jw=1;
c[cnt-d]=c[cnt-d]-10;
}
else
jw=0;
continue;
}
if(y-d-1<0)
{
c[cnt-d]=a[x-d-1]-'0'+jw;
if(c[cnt-d]>=10)
{
jw=1;
c[cnt-d]=c[cnt-d]-10;
}
else
jw=0;
continue;
}
}
if(a[x-d-1]-'0'+b[y-d-1]-'0'+jw<10)
{
c[cnt-d]=jw+a[x-d-1]-'0'+b[y-d-1]-'0';
jw=0;
}
else
{
c[cnt-d]=jw+a[x-d-1]-'0'+b[y-d-1]-'0'-10;
jw=1;
}
}
if(jw==1)
{
c[0]=1;
}
for(int ltt=0;ltt<=cnt;ltt++)
{
if(ltt==0)
{
if(c[ltt]==0)
{
continue;
}
}
cout<<c[ltt];
}
}
04-28 12:49