题目背景
无
题目描述
高精度加法,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]; } }