给出2个大整数A,B,计算A+B的结果。
Input
第1行:大数A 第2行:大数B (A,B的长度 <= 10000 需注意:A B有可能为负数)
Output
输出A + B
Input示例
68932147586 468711654886
Output示例
537643802472
思路:都是正数就直接加,负数判断大小用大减小
下面贴上代码
#include <iostream> using namespace std; string A,B; string jia(string a,string b) { long long len1=a.size(),len2=B.size(); if(a.size()<b.size()) { swap(a,b); swap(len1,len2); } int x,y,flag=0,sum; while(len1>0) { x=a[len1-1]-'0'; if(len2>0) y=b[len2-1]-'0'; else y=0; sum=x+y+flag; if(sum>=10) { flag=1; a[len1-1]=sum%10+'0'; } else { flag=0; a[len1-1]=sum%10+'0'; } len1--; len2--; } if(flag==1) a="1"+a; return a; } string jian(string a,string b) { long long len1=a.size(),len2=b.size(); int x,y,sum,flag=0; while(len1>0) { x=a[len1-1]-'0'; if(len2>0) y=b[len2-1]-'0'; else y=0; sum=x-y+flag; if(sum<0) { flag=-1; a[len1-1]=(10+sum)+'0'; } else { a[len1-1]=sum+'0'; flag=0; } len1--; len2--; } int t=0; while(a[t]=='0') { a.erase(0,1); } if(a.size()==0) a="0"; return a; } int main() { ios::sync_with_stdio(false); cin>>A>>B; if(A[0]!='-'&&B[0]!='-') { cout<<jia(A,B)<<endl; } else if(A[0]=='-'&&B[0]=='-') { A.erase(0,1); B.erase(0,1); cout<<"-"<<jia(A,B)<<endl; } else if(A[0]=='-'&&B[0]!='-') { A.erase(0,1); int t1=A.size(),t2=B.size(); if(t1>t2) { cout<<"-"<<jian(A,B)<<endl; } else if(t1<t2) { cout<<jian(B,A)<<endl; } else if(t1==t2) { if(A<=B) cout<<jian(B,A)<<endl; else if(A>B) cout<<"-"<<jian(A,B)<<endl; } } else if(A[0]!='-'&&B[0]=='-') { B.erase(0,1); int t1=A.size(),t2=B.size(); if(t1>t2) { cout<<jian(A,B)<<endl; } else if(t1<t2) { cout<<"-"<<jian(B,A)<<endl; } else if(t1==t2) { if(A>=B) cout<<jian(A,B)<<endl; else if(A<B) cout<<"-"<<jian(B,A)<<endl; } } return 0; }