zoukankan      html  css  js  c++  java
  • 杭电OJ----1002A + B问题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

    问题描述
    对您来说,我有一个非常简单的问题。给定两个整数A和B,您的工作是计算A + B的总和。
     
    输入项
    输入的第一行包含一个整数T(1 <= T <= 20),它表示测试用例的数量。然后是T行,每行由两个正整数A和B组成。请注意,这些整数非常大,这意味着您不应使用32位整数对其进行处理。您可以假设每个整数的长度不超过1000。
     
    输出量
    对于每个测试用例,您应该输出两行。第一行是“ Case#:”,#表示测试用例的编号。第二行是等式“ A + B = Sum”,Sum表示A + B的结果。请注意,该等式中有一些空格。在两个测试用例之间输出空白行。
     
    样本输入
     
    2
    1 2
    112233445566778899 998877665544332211
     
    样本输出
     
    情况1: 1 + 2 = 3
    情况2: 112233445566778899 + 998877665544332211 = 1111111111111111110
     
     
    解答:
    #include<cstdio>
    #include<iostream>
    #include<string>
    using namespace std;
    int main()
    {
        int p,A,B,num=1,sum[1000];
        string a, b;
        cin >> p;
        while (p--)
        {
            int m=0, n=0, k = 0, temp=0;
            cin>>a>>b;
            A = a.length();
            B = b.length();
            A -= 1;
            B -= 1;
            while (A>=0&&B>=0)
            {
             m =a[A]-'0';
             n =b[B]-'0';
             sum[k++] = (m+n+temp)%10;
             temp = (m+n+temp)/10;
             A--;
             B--;
              }
            if (A > B)
            {
                while (A>=0)
                {
                    n = a[A] - '0';
                    sum[k++] = (n+temp) % 10;
                    temp = (n+temp) / 10;
                    A--;
                }
            }
            if (A<B)
            {
                while (B>=0)
                {
                    n = b[B] - '0';
                    sum[k++] = (n + temp) % 10;
                    temp = (n + temp) / 10;
                    B--;
                }
            }
            sum[k] = temp;
            cout << "Case " << num << ':' << endl;
            cout << a <<" + "<<b << " = ";
            num++;
        for(int i=k-1;i>0;i--)
            {
            cout << sum[i];
            }
        cout << sum[0]<<endl;
        if (p !=0) cout << endl;
        }
        return 0;
    }
     
     
     
     
     
    永远热泪盈眶。
  • 相关阅读:
    Android的数据存储
    Servlet第一天
    JavaScript高级程序设计读书笔记(3)
    Interesting Papers on Face Recognition
    Researchers Study Ear Biometrics
    IIS 发生意外错误 0x8ffe2740
    Father of fractal geometry, Benoit Mandelbrot has passed away
    Computer vision scientist David Mumford wins National Medal of Science
    Pattern Recognition Review Papers
    盒模型bug的解决方法
  • 原文地址:https://www.cnblogs.com/2021WGF/p/14253243.html
Copyright © 2011-2022 走看看