杭州电子科技大学 Online Judge 之 “A + B Problem II(ID1002)”为什么过不了?
感觉应该没问题了,为什么还是WRONG ANSWER?/*
Name:
Copyright:
Author:
Date: 05-11-14 22:29
Description:
A + B Problem II
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 223072 Accepted Submission(s): 42802
Problem Description
I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B.
Input
The first line of the input contains an integer T(1<=T<=20) which means the number of test cases. Then T lines follow, each line consists of two positive integers, A and B. Notice that the integers are very large, that means you should not process them by using 32-bit integer. You may assume the length of each integer will not exceed 1000.
Output
For each test case, you should output two lines. The first line is "Case #:", # means the number of the test case. The second line is the an equation "A + B = Sum", Sum means the result of A + B. Note there are some spaces int the equation. Output a blank line between two test cases.
Sample Input
2
1 2
112233445566778899 998877665544332211
Sample Output
Case 1:
1 + 2 = 3
Case 2:
112233445566778899 + 998877665544332211 = 1111111111111111110
Author
Ignatius.L
*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 1001
int Add(char C[], char *A, char *B);//C = A + B,确保A,B都是正数
int main(void)
{
char A[MAX], B[MAX], C[MAX];
int i, n, leftC;
scanf("%d", &n);
for (i=1; i<=n; i++)
{
scanf("%s%s", A, B);
leftC = Add(&C, &A, &B);
printf("Case %d:\n", i);
printf("%s + %s = ", A, B);
while (leftC < MAX)
printf("%d", C[leftC++]);
printf("\n");
if (i < n)
printf("\n");
}
return 0;
}
int Add(char C[], char *A, char *B)//C = A + B,确保A,B都是正数
{
int lenA = strlen(A) -1;
int lenB = strlen(B) -1;
int i, leftC = MAX;
for (i=0; i<MAX; i++) //初始化C
C[i] = 0;
while (lenA >= 0 && lenB >= 0)
{
C[--leftC] += A[lenA--] + B[lenB--];
if (C[leftC] >= 10)
{
C[leftC-1] = C[leftC] / 10;
C[leftC] %= 10;
}
}
while (lenA >= 0)
{
C[--leftC] += A[lenA--] - '0';
if (C[leftC] >= 10)
{
C[leftC-1] = C[leftC] / 10;
C[leftC] %= 10;
}
}
while (lenB >= 0)
{
C[--leftC] += B[lenB--] - '0';
if (C[leftC] >= 10)
{
C[leftC-1] = C[leftC] / 10;
C[leftC] %= 10;
}
}
return leftC;
}