游客 Signup | Login
中文 | En

1066 - 大大的求和

小明在做小红给他出的算术题加法题,但是小红为了治一治小明懒惰的毛病,给他出的数都很大,这下小明郁闷了,想请你帮忙。

Input

输入的第一行是一个正整数N,表示一共有N组测试数据。
每组数据由1~100行正整数组成,每行正整数的长度不大于100位。
当输入0时,表示此组数据输入完毕。

Output

对于每组输入数据,输出所有数字的总和。每两组输出数据之间有一个空行。

Examples

Input

2
123456789012345678901234567890
123456789012345678901234567890
123456789012345678901234567890
0
12
34
0

Output

370370367037037036703703703670

46

Solution C

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

void Add(char *str1,char *str2,char *str3)
{
	int i,j,i1,i2,tmp,carry;
	int len1=strlen(str1),len2=strlen(str2);
	char ch;
	i1=len1-1;
	i2=len2-1;
	j=carry=0;
	for(;i1>=0&&i2>=0;++j,--i1,--i2)
	{
		tmp=str1[i1]-'0'+str2[i2]-'0'+carry;
		carry=tmp/10;
		str3[j]=tmp%10+'0';
	}
	while(i1>=0)
	{
		tmp=str1[i1--]-'0'+carry;
		carry=tmp/10;
		str3[j++]=tmp%10+'0';
	}
	while(i2>=0)
	{
		tmp=str2[i2--]-'0'+carry;
		carry=tmp/10;
		str3[j++]=tmp%10+'0';
	}
	if(carry)
		str3[j++]=carry+'0';
	str3[j]='\0';
	for(i=0,--j;i<j;++i,--j)
	{
		ch=str3[i];
		str3[i]=str3[j];
		str3[j]=ch;
	}
}

int main()
{
	int n,c=0;
	char s1[205],s2[205],r[205];
	scanf("%d",&n);
	while(n--)
	{
		if(c++)
			printf("\n");
		s1[0]='0';
		s1[1]='\0';
		while(scanf("%s",s2),strcmp(s2,"0"))
		{
			Add(s1,s2,r);
			strcpy(s1,r);
		}
		puts(r);
	}
	return 0;
}

Solution C++

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

void Add(char *str1,char *str2,char *str3)
{
	int i,j,i1,i2,tmp,carry;
	int len1=strlen(str1),len2=strlen(str2);
	char ch;
	i1=len1-1;
	i2=len2-1;
	j=carry=0;
	for(;i1>=0&&i2>=0;++j,--i1,--i2)
	{
		tmp=str1[i1]-'0'+str2[i2]-'0'+carry;
		carry=tmp/10;
		str3[j]=tmp%10+'0';
	}
	while(i1>=0)
	{
		tmp=str1[i1--]-'0'+carry;
		carry=tmp/10;
		str3[j++]=tmp%10+'0';
	}
	while(i2>=0)
	{
		tmp=str2[i2--]-'0'+carry;
		carry=tmp/10;
		str3[j++]=tmp%10+'0';
	}
	if(carry)
		str3[j++]=carry+'0';
	str3[j]='\0';
	for(i=0,--j;i<j;++i,--j)
	{
		ch=str3[i];
		str3[i]=str3[j];
		str3[j]=ch;
	}
}

int main()
{
	int n,c=0;
	char s1[205],s2[205],r[205];
	scanf("%d",&n);
	while(n--)
	{
		if(c++)
			printf("\n");
		s1[0]='0';
		s1[1]='\0';
		while(scanf("%s",s2),strcmp(s2,"0"))
		{
			Add(s1,s2,r);
			strcpy(s1,r);
		}
		puts(r);
	}
	return 0;
}
Time Limit 1 second
Memory Limit 32 MB
Discuss Stats
上一题 下一题