[大数]HDU 1753 大明A+B


Input
本题目包含多组测试数据,请处理到文件结束。
每一组测试数据在一行里面包含两个长度不大于400的正小数A和B。

Output
请在一行里面输出输出A+B的值,请输出最简形式。详细要求请见Sample Output。

Sample Input

1.1 2.9
1.1111111111 2.3444323343
1 1.1

Sample Output

4
3.4555434454
2.1

#include
#include
#include
int main()
{
	int sum1[424],sum2[424];
	char s1[424],s2[424];
	while(scanf("%s%s",s1,s2)==2)
	{
		char s3[424]={''},s4[424]={''};
		int i=0,j=0,k=0,m=0,n=0,l=0,t=0,flag=0;
		memset(sum1,0,sizeof(sum1));
		memset(sum2,0,sizeof(sum2));
		while(s1[i])
		{
			if(s1[i]!='.')
			s3[k++]=s1[i++];//把整数部分放入s3数组
			else
			{
				i++;
				while(s1[i])
					s1[m++]=s1[i++]; //把小数位放入s1数组
			}
		}
		i=0;
		while(s2[i])
		{
			if(s2[i]!='.')
				s4[j++]=s2[i++]; //把整数部分放入s4数组
			else
			{
				i++;
				while(s2[i])
					s2[n++]=s2[i++]; ////把小数位放入s2数组
			}
		}

		for(i=0;im)
			m=n;
		i=m;
		while(i>0) //小数位进位
		{
			sum2[i-1]+=sum2[i]/10;
			sum2[i]=sum2[i]%10;
			i--;
		}
		for(i=k-1;i>=0;i--) //s3数组字符变数字 整数数位
			sum1[k-1-i]=s3[i]-'0';
		sum1[0]=sum1[0]+sum2[0];
		for(i=j-1;i>=0;i--) //s4数组字符变数字 整数数位
			sum1[j-1-i]+=s4[i]-'0';
		if(j>k)
			k=j;
		i=0;
		while(i=0;i--)
			printf("%d",sum1[i]);
		if(t)
		{
			printf(".");
			for(i=1;i<=t;i++)
				printf("%d",sum2[i]);
		}
		printf("n");
	}
	return 0;
}

发表评论