HDU 1002: 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 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

#include<iostream>
#include<algorithm>
#include<string.h>
#include<vector>
#include<cstring>
#include<cstdlib>
using namespace std;
const int maxn = 1024;
char str1[maxn], str2[maxn];
int  array_1[maxn], array_2[maxn];
void sum()
{
    for(int i = strlen(str1) - 1, j = 0; i >= 0; i--)
        array_1[j++] = str1[i] - ‘0‘;
    for(int i = strlen(str2) - 1, j = 0; i >= 0; i--)
        array_2[j++] = str2[i] - ‘0‘;

    for(int i = 0; i < maxn; i++)
    {
        array_2[i] += array_1[i];
        if(array_2[i] >= 10)
        {
            array_2[i + 1] += array_2[i] / 10;
            array_2[i] %= 10;
        }
    }
      cout<<str1<<" + "<<str2<<" = ";
    int k=strlen(str1)>strlen(str2)?strlen(str1):strlen(str2) ;
    for( k=k ; k >= 0 && array_2[k] == 0; k--);
        if(k >= 0)
            for( ; k >= 0; k--)
                cout << array_2[k];
        else
            cout << 0;
    cout << endl;
}

int main()
{
    int t;
    cin>>t;
    for(int i=1;i<=t;i++)
    {

        memset(array_1, 0, sizeof(array_1));
        memset(array_2, 0, sizeof(array_2));
        memset(str1, 0, sizeof(str1));
        memset(str2, 0, sizeof(str2));
        cin >> str1 ;
        cin >> str2 ;
        cout<<"Case "<<i<<":"<<endl;
        sum();
        if(i!=t)
            cout<<endl;
    }

    return 0;
}

原文地址:https://www.cnblogs.com/Shallow-dream/p/11610485.html

时间: 2024-10-16 22:06:13

HDU 1002: A + B Problem II (大数加法)的相关文章

抓起根本(二)(hdu 4554 叛逆的小明 hdu 1002 A + B Problem II,数字的转化(反转),大数的加法......)

数字的反转: 就是将数字倒着存下来而已.(*^__^*) 嘻嘻…… 大致思路:将数字一位一位取出来,存在一个数组里面,然后再将其变成数字,输出. 详见代码. 1 while (a) //将每位数字取出来,取完为止 2 { 3 num1[i]=a%10; //将每一个各位取出存在数组里面,实现了将数字反转 4 i++; //数组的变化 5 a/=10; 6 } 趁热打铁 例题:hdu 4554 叛逆的小明 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid

HDU 1002 A + B Problem II(两个大数相加)

详细题目点击:http://acm.hdu.edu.cn/showproblem.php?pid=1002 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)

A + B Problem II(大数加法)

一直格式错误,不想改了,没A 1 #include <iostream> 2 #include <stdio.h> 3 #include <string.h> 4 #include <stdlib.h> 5 using namespace std; 6 7 int main() 8 { 9 int T,K=0; 10 scanf("%d",&T); 11 char a[1002],b[1002]; 12 int ta[1002],

题解报告:hdu 1002 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 fol

(hdu step 2.3.1)A + B Problem II(大数加法)

题目: A + B Problem II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2372 Accepted Submission(s): 917   Problem Description I have a very simple problem for you. Given two integers A and B, your j

hdu 1002 A + B Problem II(大数)

题意:整数大数加法 思路:大数模板 #include<iostream> #include<stdio.h> #include<stdlib.h> #include<string.h> using namespace std; #define MAXN 9999//万进制 #define DLEN 4//4位 class BigNum{ private: int a[500];//可以控制大数位数(500*4) int len;//大数长度 public:

HDU 1002 A + B Problem II(大整数相加)

A + B Problem II Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u 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 c

hdu 1002 A + B Problem II(大数模拟加法)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1002 题目要求:输入t 为测试组数,然后输入两个正数 a,b求和: [思路] 首先,用字符串读入a,b,再将a,b 逆序存到数组中,然后对应位相加就行了,长度小的数要注意补零 倒过来做可以让进位变得方便 ,如果对应位的和大于等于10,就把余数储存在当前位置,后一位加1: [代码] #include <iostream> #include <string> #include <cs

HDU - 1002 A + B Problem II (大整数加法)

一道很基础的大整数加法. 简单的说一下思路吧. 先用字符串读取两个大数.首先需要把数组给初始化为0方便以后处理,然后对数组逆序对齐处理,接着相加转化后的两个数组并把之存进结果数组里面,最后对结果数组进行进位处理. 看代码吧. #include <stdio.h> #include <string.h> #include <math.h> #include <algorithm> #include <queue> #include <stac

hdu 1002.A + B Problem II 解题报告

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1002 题目意思:就是大整数加法. 两年几前做的,纯粹是整理下来的. 1 #include <stdio.h> 2 #include <string.h> 3 4 #define max 1010 5 char a[max], b[max]; 6 7 int main() 8 { 9 int i, k, s, c, T, len1, len2; 10 scanf("%d&quo