您的位置:首页 > 其它

【HUSTOJ】1113: 高精度加法之一

2016-05-12 21:00 337 查看


1113: 高精度加法之一

Time Limit: 1 Sec  Memory Limit: 128 MB

Submit: 150  Solved: 67

原题链接


Description

计算a+b的值,a,b 皆不超过300位。


Input

两个数 每行一个


Output

一个数


Sample Input

12
23


Sample Output

35


HINT


Source

#include<stdio.h>
#include<string.h>

void Right(char *s,int strlens,char *c)  //使数组右对齐
{
for(int k=0;k<=strlens-1;k++)
{
s[2999-strlens+1+k]=c[k];
}

}

void Add(char *a,char *b,char *d)      //a与b相加,结果存到d组中
{
for(int l=2999;l>=0;l--)
{
d[l+1]+=a[l]+b[l]-2*'0';

if(d[l+1]>='9'+1)
{d[l+1]=d[l+1]-10;
d[l]++;}
}
}

main()
{
char a[3000],b[3000],c[3000],e[3000],d[3001];
int i,j;

memset(a,'0',3000);
memset(b,'0',3000);
memset(c,'0',3000);
memset(e,'0',3000);
memset(d,'0',3001);
while(scanf("%s %s",c,e)==2)
{

Right(a,strlen(c),c);
Right(b,strlen(e),e);

Add(a,b,d);

for(i=0;i<3001;i++)
{
if(d[i]!='0')
{break;}

}

int t=0;
for(j=i;j<3001;j++)
{
printf("%c",d[j]);t++;
}

if(t==0)
{printf("0");}
printf("\n");

memset(a,'0',3000);
memset(b,'0',3000);
memset(c,'0',3000);
memset(e,'0',3000);
memset(d,'0',3001);

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