1. 程式人生 > >HDOJ 1002.A+B Problem II 答案

HDOJ 1002.A+B Problem II 答案

#include<cstdio>
#define MAXS 10000
char a[MAXS],b[MAXS],c[MAXS];
void cal();
int main()
{
	int T,i;
	scanf("%d",&T);
	for(i=0;i<T;++i)
	{
		scanf("%s",a);
		scanf("%s",b);
		printf("Case %d:\n",i+1);
		cal();
		printf("%s + %s = %s\n",a,b,c);
		if(i!=T-1)
			printf("\n");
	}
	return 0;
}
void cal()
{
	int asize=0,bsize=0,i,j,t;
	for(i=0;i<MAXS;++i)
		c[i]=0;
	for(asize=0;a[asize]!=0;++asize)
		;
	for(bsize=0;b[bsize]!=0;++bsize)
		;
	for(i=0; bsize>0 || asize>0 ;++i)
	{
		if(bsize>0)
			c[i]+=b[--bsize]-'0';
		if(asize>0)
			c[i]+=a[--asize]-'0';
		if(c[i]>9)
		{
			c[i+1]=c[i]/10;
			c[i]=c[i]%10;
		}
	}
	if(c[i]==0)
		i--;
	for(j=0;j<=i/2;j++)
	{
		t=c[j];
		c[j]=c[i-j];
		c[i-j]=t;
	}
	for(j=0;j<=i;++j)
		c[j]=c[j]+'0';
}