hdu 1753 长小数相加 为何不过????
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 1010
char a[N],b[N];
int s1[N],s2[N],ans[N];
int index;
void Add()
{
int i,j,k,n,s,c;
memset(s1,0,sizeof(s1));
memset(s2,0,sizeof(s2));
memset(ans,0,sizeof(ans));
n=strlen(a);
if(strchr(a,'.')==NULL)
{
k=n;
}
else
{
k=strchr(a,'.')-a; ///zhuyi !!
}
j=500;
for(i=k-1;i>=0;i--)
{
s1[j++]=a[i]-'0';
}
j=499;
for(i=k+1;a[i];i++)
{
s1[j--]=a[i]-'0';
}
n=strlen(b);
if(strchr(b,'.')==NULL)
{
k=n;
}
else
{
k=strchr(b,'.')-b;
}
j=500;
for(i=k-1;i>=0;i--)
{
s2[j++]=b[i]-'0';
}
j=499;
for(i=k+1;b[i];i++)
{
s2[j--]=b[i]-'0';
}
c=0;
for(i=0;i<1100;i++)
{
s=s1[i]+s2[i]+c;
ans[i]=s%10;
c=s/10;
}
}
void Output()
{
int i;
for(i=1099;i>=500;i--)
{
if(ans[i]!=0)
{
index=i;
break;
}
}
if(i==499)
printf("0");
else
{
for(i=index;i>=500;i--)
printf("%d",ans[i]);
}
for(i=0;i<=499;i++)
{
if(ans[i]!=0)
{
index=i;
break;
}
}
if(i!=500)
{
printf(".");
for(i=499;i>=index;i--)
printf("%d",ans[i]);
}
printf("\n");
}
int main()
{
while(scanf("%s %s",a,b)!=EOF)
{
Add();
Output();
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
}
return 0;
}