标签:length ble positive follow main code simple each nes
I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B
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.
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.
2
1 2
112233445566778899 998877665544332211
Case 1:
1 + 2 = 3
Case 2:
112233445566778899 + 998877665544332211 = 1111111111111111110
思路:使用字符串储存两个大数据,再用一个数组c来储存他们的和,用变量p,q分别指向他们的个位数,因为是从左到右输入的,所以是从strlen(a) - 1开始,将其个位数相加,使用sum储存,sum%10储存在c中sum/10补在下一位,一直循环到p和q等于0,注意当其中一个为0时停止其对应相加。
#include <iostream> #include <cstring> #include <cstdio> using namespace std; char a[1005], b[1005]; int c[1005]; int main() { int t; cin >> t; for(int i = 1; i <= t; i++) { memset(a, ‘0‘, sizeof(a)); memset(b, ‘0‘, sizeof(b)); memset(c, 0, sizeof(c)); getchar(); cin >> a >> b; int sum = 0; int p = strlen(a) - 1, q = strlen(b) - 1; int k = 0; while(1) { if(p >= 0 && q >= 0) sum = a[p] - 48 + b[q] - 48 + sum; if(p < 0 && q >= 0) sum = + b[q] - 48 + sum; if(p >= 0 && q < 0) sum = a[p] - 48 + + sum; c[k++] = sum%10; sum = sum/10; if(p < 0 && q < 0)break; p--; q--; } cout << "Case " << i << ‘:‘; cout << endl; for(int j = 0; j < strlen(a); j++) cout << a[j]; cout << " + "; for(int j = 0;j < strlen(b); j++) cout << b[j]; cout << " = "; for(int j = k - 2; j >= 0; j--) cout << c[j]; cout << endl; if(i != t)cout << endl; } return 0; }
标签:length ble positive follow main code simple each nes
原文地址:http://www.cnblogs.com/liuqiyu/p/7219263.html