【洛谷 P1601】A+B Problem(高精)题解(高精度+向量)

简介: 该问题要求解决高精度加法(正数)的A+B问题。给定两个不超过10^500的大整数a和b,程序需输出它们的和。样例输入包括两个整数,如1和1,输出为2;另一样例是1001和9099,输出为10100。解决方案通过模拟十进制加法实现,代码使用C++,将输入转换为字符数组,然后逐位相加并处理进位。最终结果反向输出。

A+B Problem(高精)

题目描述

高精度加法,相当于 a+b problem,不用考虑负数

输入格式

分两行输入。$a,b \leq 10^{500}$。

输出格式

输出只有一行,代表 $a+b$ 的值。

样例 #1

样例输入 #1

1
1

样例输出 #1

2

样例 #2

样例输入 #2

1001
9099

样例输出 #2

10100

思路

模拟十进制加法,逢10进一。

AC代码

#include <iostream>
#include <sstream>
#include <algorithm>
#include <string>
#include <vector>
#define AUTHOR "HEX9CF"
using namespace std;

const int maxn = 100005;

void printv(vector<int> v){
   
    vector<int>::iterator it = v.begin();
    for(; it != v.end(); it++){
   
        cout << *it;
    }
}

int main() {
   
    char ch;
    string str1, str2;
    stringstream ss1, ss2;
    vector<int> v1, v2, v3;
    cin >> str1 >> str2;
    ss1 << str1;
    ss2 << str2;
    while(ss1 >> ch){
   
        v1.push_back(ch - '0');
    }
    while(ss2 >> ch){
   
        v2.push_back(ch - '0');
    }
    reverse(v1.begin(), v1.end());
    reverse(v2.begin(), v2.end());
    vector<int>::iterator it1 = v1.begin();
    vector<int>::iterator it2 = v2.begin();
    for(;it1 != v1.end() && it2 != v2.end();it1++, it2++){
   
        int sum = *it1 + *it2;
        v3.push_back(sum);
    }
    for(;it1 != v1.end();it1++){
   
        v3.push_back(*it1);
    }
    for(;it2 != v2.end();it2++){
   
        v3.push_back(*it2);
    }
    vector<int>::iterator it3 = v3.begin();
    int flg = 0;
    for(;it3 != v3.end(); it3++){
   
        if (*it3 > 9)
        {
   
            *it3 -= 10;
            if (v3.end() == it3 + 1)
            {
   
                flg = 1;
            }
            else
            {
   
                *(it3 + 1) += 1;
            }
        }
    }
    if(flg){
   
        v3.push_back(1);
    }
    reverse(v3.begin(), v3.end());
    printv(v3);

    return 0;
}
目录
相关文章
|
5月前
|
存储
【洛谷 P2437】蜜蜂路线 题解(递归+记忆化搜索+高精度)
蜜蜂路线问题:蜜蜂从蜂房$m$到$n$($m&lt;n$)按数字递增爬行。给定$m$和$n$,求路线数。示例:$m=1$,$n=14$,输出$377$。100%数据$1\leq m,n\leq1000$。使用斐波那契序列优化,高精度处理大数。代码实现斐波那契存储并动态规划求解。
86 0
|
6月前
|
存储 算法 索引
【算法基础】基础算法(二)--(高精度、前缀和、差分)(上)
【算法基础】基础算法(二)--(高精度、前缀和、差分)(上)
|
6月前
|
人工智能 算法 BI
【算法基础】基础算法(二)--(高精度、前缀和、差分)(下)
【算法基础】基础算法(二)--(高精度、前缀和、差分)(下)
|
6月前
|
Go
[leetcode 差分数组] 拼车 M
[leetcode 差分数组] 拼车 M
|
算法 Android开发
LeetCode 周赛上分之旅 #41 结合离散化的线性 DP 问题
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
74 0
数学问题之(高精快速幂)
数学问题之(高精快速幂)
LeetCode每日一题(10)——三维形体投影面积(保姆级)
三维形体投影面积 1.题目 2.示例 3.思路 理解题目 解题思路 4.代码
121 0
LeetCode每日一题(10)——三维形体投影面积(保姆级)
|
人工智能 移动开发 算法
【有营养的算法笔记】基础算法 —— 推导证明前缀和与差分
【有营养的算法笔记】基础算法 —— 推导证明前缀和与差分
109 0
【有营养的算法笔记】基础算法 —— 推导证明前缀和与差分
|
机器学习/深度学习 人工智能 开发框架
【有营养的算法笔记】基础算法 —— 推导证明前缀和与差分2
【有营养的算法笔记】基础算法 —— 推导证明前缀和与差分
95 0
【有营养的算法笔记】基础算法 —— 推导证明前缀和与差分2
|
开发者
膜拜(离散化差分模板题)
题目描述 小鱼有 n 名优秀的粉丝。 粉丝们得知小鱼将会在一条直线上出现,打算去膜他。为了方便,粉丝们在这条直线上建立数轴。 第 i 名粉丝有一个侦查区间[li,ri] 。如果小鱼在 j(li≤j≤ri) 处出现,这名粉丝将立刻发现并膜他。 小鱼希望膜他的人越多越好,但是他不能分身,因此只能选择一个位置出现。 小鱼想知道自己最多能被多少个人膜。
217 0
膜拜(离散化差分模板题)