A + B Problem II

A + B Problem II

Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 48   Accepted Submission(s) : 19
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
 
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 
 5 Deal(int num)
 6 {
 7     int sign;
 8     if(num>=10&&num<20) sign=1;
 9     else if(num>=20)sign=2;
10     else sign=0;
11     return sign;
12 }
13 
14 int main()
15 {
16     int T,t,LenA,LenB,i,j,LenC,sign;
17     char a[1010],b[1010],c[1000];
18     scanf("%d",&T);
19     t=1;
20     while(T--)
21     {
22        scanf("%s%s",a,b);
23        LenA=strlen(a);LenB=strlen(b);
24        for(i=LenA-1,j=LenB-1,LenC=0,sign=0;;i--,j--)
25        {
26             if(i==-1||j==-1)break;
27             c[LenC++]=((a[i]-'0')+(b[j]-'0')+sign)%10;
28             sign=Deal((a[i]-'0')+(b[j]-'0')+sign);
29        }
30        if(i==-1)
31            for(j;;j--){if(j==-1)break;c[LenC++]=((b[j]-'0')+sign)%10;sign=Deal((b[j]-'0')+sign);}
32         else
33            for(i;;i--){if(i==-1)break;c[LenC++]=((a[i]-'0')+sign)%10;sign=Deal((a[i]-'0')+sign);}
34         if(sign!=0)c[LenC++]=sign;
35         printf("Case %d:
",t++);
36         printf("%s + %s = ",a,b);
37         for(LenC-=1;LenC>=0;LenC--)
38             printf("%d",c[LenC]);
39         putchar('
');
40         if(T!=0)
41             putchar('
');
42     }
43 }
View Code
转载请备注:
**************************************
* 作者: Wurq
* 博客: https://www.cnblogs.com/Wurq/
* Gitee: https://gitee.com/wurq
**************************************
原文地址:https://www.cnblogs.com/Wurq/p/3750240.html