您的位置:首页 > 其它

高精度加法模板

2014-09-04 13:51 239 查看
哎!说来惭愧,从高一刚开始学时,高精度就没写对过。今天猛然想起,打个模板。

#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
char A[405],B[405];
int a[405],b[405],c[405],la,lb;
void change()
{
int i,t;
for(i=0;i<=(la-1)>>1;i++)
{t=(int)A[i]-'0'; a[i]=(int)A[la-1-i]-'0'; a[la-1-i]=t;}
for(i=0;i<=(lb-1)>>1;i++)
{t=(int)B[i]-'0'; b[i]=(int)B[lb-1-i]-'0'; b[lb-1-i]=t;}
}
void add()
{
int l,i,j,s,t=0;
l=max(la,lb);
for(i=0;i<l;i++)
{c[i]=a[i]+b[i]+t;
t=c[i]/10; c[i]=c[i]%10;
}
if(t!=0) {c[l]=t; l++;}
for(i=l-1;i>=0;i--) printf("%d",c[i]);
printf("\n");
}
int main()
{
while(scanf("%s",A)!=EOF)
{scanf("%s",B);
la=strlen(A); lb=strlen(B);
memset(a,0,sizeof(a)); memset(b,0,sizeof(b));
change(); add();
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  高精度