zoukankan      html  css  js  c++  java
  • 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;
    }//我没用弄明白那个定义变量与{}是否有关系,应该是有关系。
  • 相关阅读:
    bzoj2815: [ZJOI2012]灾难
    bzoj1188: [HNOI2007]分裂游戏
    bzoj4538: [Hnoi2016]网络
    bzoj3594: [Scoi2014]方伯伯的玉米田
    bzoj2595: [Wc2008]游览计划
    bzoj3277: 串
    Django开发:(3.2)ORM:多表操作
    Django开发:(3.1)ORM:单表操作
    Django:(2)视图层&模板层
    Django开发:(1)django基础 & url控制器
  • 原文地址:https://www.cnblogs.com/binanry/p/9703628.html
Copyright © 2011-2022 走看看