给定两个整数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
100 200
Sample Output
Case 1: 1 + 2 = 3 Case 2: 100 + 200 = 300
解题思路:大数模板;
1 #include<iostream>
2 #include <string.h>
3 #include <stdio.h>
4
5 using namespace std;
6
7 const int MAX = 1000 + 10;
8 int N;
9 int len1,len2,max1;
10 char a[MAX],b[MAX];
11 int a1[MAX],b1[MAX];
12 int sum[MAX];
13
14 int main()
15 {
16 cin>>N;
17
18 for(int i = 1;i <= N;i++)
19 {
20 memset(a,0,sizeof(a));
21 memset(a1,0,sizeof(a1));
22 memset(b,0,sizeof(b));
23 memset(b1,0,sizeof(b1));
24 memset(sum,0,sizeof(sum));
25
26 cin>>a>>b;
27 len1 = strlen(a);
28 len2 = strlen(b);
29 for(int i = 0,j = len1 - 1;j >= 0;j--)
30 a1[i++] = a[j] - '0';
31 for(int i = 0,j = len2 - 1;j >= 0;j--)
32 b1[i++] = b[j] - '0';
33
34 int temp = 0;
35 max1 = len1>len2?len1:len2;
36 if(len1 > len2)
37 for(int i = 0;i <= len1;i++)
38 {
39 sum[i] = ( a1[i] + b1[i] + temp) % 10;
40 temp = ( a1[i] + b1[i] + temp) / 10;
41 }
42 else
43 for(int i = 0;i <= len2;i++)
44 {
45 sum[i] = ( a1[i] + b1[i] + temp) % 10;
46 temp = ( a1[i] + b1[i] + temp) / 10;
47 }
48
49 printf("Case %d:
%s + %s = ",i, a , b);
50
51 if(sum[max1] != 0)cout<<sum[max1];
52 for(int i = max1 - 1;i>=0;i--)
53 cout<<sum[i];
54 cout<<endl;
55 if(i != N)
56 cout<<endl;
57 }
58
59
60 return 0;
61 }