• 计算机考研复试真题 a+b(大数加法)


    题目描述

    实现一个加法器,使其能够输出a+b的值。

    输入描述:

    输入包括两个数a和b,其中a和b的位数不超过1000位。

    输出描述:

    可能有多组测试数据,对于每组数据,
    输出a+b的值。
    示例1

    输入

    2 6
    10000000000000000000 10000000000000000000000000000000
    

    输出

    8
    10000000000010000000000000000000





    /*
    程序设计思路:属于大数相加题型,一种典型解题步骤:
    1、从结尾开始每位相加 
    2、两个整数长度不相等(肯定有一个已经加完了,再把没有加完的加上去) 
    3、最高位有进位,要再进一位 
    4、结果字符串逆序
    */
    #include<iostream>
    #include<string>
    #include<algorithm>
    using namespace std;
    
    string BigNumAdd(const string& strNum1, const string& strNum2)
    {
        string strSum;
        int len1 = strNum1.size()-1;
        int len2 = strNum2.size()-1;
        int bit = 0;                //保存进位
    
        //从结尾开始每位相加 
        while (len1>=0 && len2>=0)
        {
            //求每位的和(要把进位也加上) 
            int tmpSum = strNum1[len1]-'0' + strNum2[len2]-'0' + bit;
            //保存进位结果 
            strSum += tmpSum % 10 + '0';
            //求进位 
            bit = tmpSum / 10;
            --len1;
            --len2; 
        }
    
        //两个整数长度不相等(肯定有一个已经加完了,不需要再额外加if来判断,因为while就可以判断)
        while (len1 >= 0)
        {
            //和上个while循环一样
            int tmpSum = strNum1[len1]-'0' + bit;
            strSum += tmpSum % 10 + '0';
            bit = tmpSum / 10;
            --len1; 
        }
        while (len2 >= 0) 
        {
            //和上个while循环一样
            int tmpSum = strNum2[len2]-'0' + bit;
            strSum += tmpSum % 10 + '0';
            bit = tmpSum / 10;
            --len2; 
        }
    
        //最高位有进位
        if (bit != 0)
            strSum += bit + '0'; 
        //反转
        reverse(strSum.begin(), strSum.end()); 
        return strSum;
    }
    
    int main(){
        string num1,num2;
        while(cin>>num1>>num2){
            cout<<BigNumAdd(num1,num2)<<endl;
        }
        return 0;
    }
  • 相关阅读:
    内容绘制到Bitmap上不成功警示
    一些c++面试题目
    Windows Socket 主要API功能
    面试问题(一)
    函数指针与指针函数
    机器学习和数据挖掘的网站
    vs2010打开vs2008程序出现错误
    MATLAB将矩阵使用.txt文件格式保存
    指针实现值交换
    堆与栈的区别
  • 原文地址:https://www.cnblogs.com/parzulpan/p/9948899.html
Copyright © 2020-2023  润新知