码迷,mamicode.com
首页 > 其他好文 > 详细

大整数加法 A + B

时间:2017-07-21 19:45:37      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:length   ble   positive   follow   main   code   simple   each   nes   

A + B

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 input

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;
}

 

大整数加法 A + B

标签:length   ble   positive   follow   main   code   simple   each   nes   

原文地址:http://www.cnblogs.com/liuqiyu/p/7219263.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!