[ACMcoder] A + B Problem II
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 shoshould 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 shoshould 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
21 2112233445566778899 998877665544332211
Sample Output
Case 1:1 + 2 = 3Case 2:112233445566778899 + 998877665544332211 = 1111111111111111110
Solutions
The idea is simple. Pay attention to carry.
Problem solving code
// Some details have been completed for a long time: // use max to reference algorithm // note that the last sample cannot output empty rows # include
# Include using namespace std; int main () {char n1 [1001] = {0}; char n2 [1001] = {0}; int total; // cin> total; scanf ("% d", & total); int outputindex = 0; while (outputindex <total) {// cin> n1> n2; scanf ("% s", n1, n2); int len1 = 0; int len2 = 0; while ('\ 0 '! = N1 [len1]) len1 ++; while ('\ 0 '! = N2 [len2]) len2 ++; char n [1002] = {0}; int index1 = len1-1; int index2 = len2-1; int index = max (index1, index2) + 1; char bit = 0; int num = 0; while (index1> = 0 & index2> = 0) {num = n1 [index1] + n2 [index2]-48 + bit; if (num> 57) {n [index] = num-10; bit = 1 ;} else {n [index] = num; bit = 0;} -- index1; -- index2; -- index;} while (index1> = 0) {num = n1 [index1] + bit; if (num> 57) {N [index] = num-10; bit = 1;} else {n [index] = num; bit = 0;} -- index1; -- index ;} while (index2> = 0) {num = n2 [index2] + bit; if (num> 57) {n [index] = num-10; bit = 1 ;} else {n [index] = num; bit = 0;} -- index2; -- index;} if (bit! = 0) {n [index] = bit + '0';} char * p = n; while ('\ 0' = * p) p ++; ++ outputindex; cout <"Case" <