信息一本通 1168:大整数加法
题目:
本题超出unsigned long long范围,需要用高精度算法
正确代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
string x,y;
int a[50000],b[50000],c[50000];
int la,lb;
cin>>x>>y;
la=x.length();
lb=y.length();
//所有数据归零
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
//倒序导入数据
for(int i=0;i<=la-1;i++)
a[la-i]=x[i]-48; //or直接减字符 '0'
for(int i=0;i<=lb-1;i++)
b[lb-i]=y[i]-48;
int up=0;
int len=1;
while((len<=la)||(len<=lb))//最高位的长度位置
{
c[len]=a[len]+b[len]+up;//第i位相加并加上次的进位 !一定要加up进位
up=c[len]/10;//向高位进位
c[len]%=10;
len++;//位置下标
}
/*处理最高进位*/
c[len]=up;
while(c[len]==0)//去零操作
len--;
for(int i=len;i>0;i--)//倒序输出
cout<<c[i];
cout<<endl;
}
/第一次发帖有点小激动 (っ•̀ω•́)っ⁾⁾