您的位置:首页 > 其它

高精度(大整数加法)

2010-07-15 16:01 316 查看
]#include<iostream>
#include<memory>
using namespace std;
const int max_len=200;
int an1[max_len+10];
int an2[max_len+10];
char sz1[max_len+10];
char sz2[max_len+10];

int main()
{
int n,k;
cin>>n;
for(k=0;k<n;k++)
{
cin>>sz1>>sz2;

//scanf("%s",sz1);
//scanf("%s",sz2);
int i,j;

memset(an1,0,sizeof(an1));
memset(an2,0,sizeof(an2));
//-------------------------------
int nlen1=strlen(sz1);
j=0;
for(i=nlen1-1;i>=0;i--)
{
an1[j++]=sz1[i]-'0';
}

int nlen2=strlen(sz2);
j=0;
for(i=nlen2-1;i>=0;i--)
{
an2[j++]=sz2[i]-'0';
}
//-------------------------------
for(i=0;i<max_len;i++)
{
an1[i]+=an2[i];
if(an1[i]>=10)
{
an1[i]-=10;
an1[i+1]++;
}
}
//--------------------------------
bool b=false;
for(i=max_len;i>=0;i--)
{
if(b)
{
printf("%d",an1[i]);
}
else if(an1[i])
{
printf("%d",an1[i]);
b=true;
}
}
if(!b)
{
cout<<'0';
}
cout<<endl;

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: