C++大数相加
问题描述:
第1行:大数A
第2行:大数B
输出A+B(A,B的长度 <= 10000 )
C++代码:
#include<iostream>
using namespace std;
int main()
{ string a,b;
cin>>a>>b;
int num[10000]={0};
int t=0;
if(a.length()<b.length())
swap(a,b);
if(a.length()>=b.length())
{ int m=a.length()-b.length();
for(int i=a.length()-1;i>=0;i--)
{
if(i-m>=0)//将短的用完了
{
int th=(num[i]+((int)a[i]-48)+((int)b[i-m]-48));
num[i]=0;
num[i]+=th%10;
num[i-1]+=th/10;//进位
if(i==0)
t=th/10;
}
else
{
num[i]+=(int)a[i]-48;
}
}
}
if(t!=0)
cout<<t;
for(int i=0;i<a.length();i++)
{
cout<<num[i];
}
return 0;
}
缺点:只可以进行正数相加。