• 1151: 大整数加法


    题目描述

    比利经常会碰到超大整数的加法运算,而普通的计算器上无法进行。因此他想你帮他写一个程序来计算结果。

    输入

    输入数据有多组。首先输入一个整数T,表示有T组输入。

    每组输入两个大整数,并用空格隔开。每个整数最多1000位。没有负数输入。

    输出

    对于每组输入,输出两个整数的和,单独占一行。

    样例输入

    2
    1 2
    112233445566778899 998877665544332211

    样例输出

    3
    1111111111111111110
    #include<iostream>
    #include<string>
    #include<algorithm>
    using namespace std;
    int main()
    {
        int t;
        cin >> t;
        string s;
        while (t--)
        {
            string a, b;
            cin >> a >> b;
            if (a.size()<b.size())
                swap(a, b);
            int len = a.size() - b.size();
            if (len){
                string b2(len, '0');
                b = b2 + b;
            }//补齐,不够用零。
            s = a;
            int carry = 0;
            //reverse(a.begin(), a.end());
            //reverse(b.begin(), b.end());刚开始想反转在加,到最后解决不了最后一个进位,所以没办法。
            for (int i = a.size() - 1; i >= 0; i--)
            {
                s[i] = (a[i] - '0' + b[i] - '0' + carry) % 10 + '0';
                carry = (a[i] - '0' + b[i] - '0' + carry) / 10;
            }//这个加零和减零,特别容易弄混。-‘0’是字符转数字,+‘0’是字符转数字;亦可调用stoic(),不过需要c.str()函数与string与char的转换。
            //reverse(s.begin(),s.end());
            if (carry>0)
            {
                s = "1" + s;
            }
            //
            cout << s << endl;
        }
        return 0;
    }//我没用弄明白那个定义变量与{}是否有关系,应该是有关系。
  • 相关阅读:
    dynamic_debug和pr_debug()打印_高通平台
    Linux内核中的数据结构杂记
    Binder杂记
    内核中读写文件
    记一次阿里云ECS中Docker容器内无法连接RDS内网地址的故障解决
    mac上使用sips命令快速裁剪、旋转、翻转图片
    最新Android手机导出ANR、tombstones文件
    Android日期格式控制—— DateUtils
    addr2line的用法
    Spring-Cloud 学习笔记-(6)Feign
  • 原文地址:https://www.cnblogs.com/binanry/p/9703628.html
Copyright © 2020-2023  润新知