Problem Description
Little boxes on the hillside.
Little boxes made of ticky-tacky.
Little boxes.
Little boxes.
Little boxes all the same.
There are a green boxes, and b pink boxes.
And c blue boxes and d yellow boxes.
And they are all made out of ticky-tacky.
And they all look just the same.
Input
The input has several test cases. The first line contains the integer t (1 ≤ t ≤ 10) which is the total number of test cases.
For each test case, a line contains four non-negative integers a, b, c and d where a, b, c, d ≤ 2^62, indicating the numbers of green boxes, pink boxes, blue boxes and yellow boxes.
Output
For each test case, output a line with the total number of boxes.
Sample Input
4
1 2 3 4
0 0 0 0
1 0 0 0
111 222 333 404
Sample Output
10
0
1
1070
思路
套个大数加法模板
代码
#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
#define MAX 1000
using namespace std;
int Addition(char *num1,char *num2,char *num3,char *num4,int *sum)
{
int i,j,len;
int n1[MAX]={0},n2[MAX]={0},n3[MAX]={0},n4[MAX]={0};
int len1=strlen(num1);
int len2=strlen(num2);
int len3=strlen(num3);
int len4=strlen(num4);
len=max(len1,len2);
len=max(len,len3);
len=max(len,len4);
for(i=len1-1,j=0; i>=0; i--,j++)
n1[j]=num1[i]-'0';
for(i=len2-1,j=0; i>=0; i--,j++)
n2[j]=num2[i]-'0';
for(i=len3-1,j=0; i>=0; i--,j++)
n3[j]=num3[i]-'0';
for(i=len4-1,j=0; i>=0; i--,j++)
n4[j]=num4[i]-'0';
for(i=0; i<len; i++)
{
sum[i]+=n2[i]+n1[i]+n3[i]+n4[i];
if(sum[i]>9)
{
sum[i+1]+=sum[i]/10;
sum[i]%=10;
}
}
int l=len+2;
while(sum[l]==0)
l--;
return l;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int i,len,sum[MAX]={0};
char num1[MAX],num2[MAX],num3[MAX],num4[MAX];
while(~scanf("%s %s %s %s",num1,num2,num3,num4))
{
memset(sum,0,sizeof(sum));
len=Addition(num1,num2,num3,num4,sum);
if(len<0)
printf("0\n");
else
{
for(i=len; i>=0; i--)
{
printf("%d",sum[i]);
}
printf("\n");
}
}
}
return 0;
}