备战蓝桥杯【高精度加法和高精度减法】

简介: 备战蓝桥杯【高精度加法和高精度减法】
🌹作者:云小逸
📝个人主页: 云小逸的主页
📝Github: 云小逸的Github
🤟motto:要敢于一个人默默的面对自己, ==强大自己才是核心==。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前,其次就是现在!学会自己和解,与过去和解,努力爱自己。==希望春天来之前,我们一起面朝大海,春暖花开!==🤟
👏专栏:C++👏 👏专栏:Java语言👏
👏专栏:C语言初阶👏👏专栏:数据结构👏

@TOC


前言

今天是备战蓝桥杯第三篇文章,这里主要写的是关于高精度的问题:高精度加法,高精度减法,高精度乘法,高精度减法。如有错误,请私信作者,十分感谢,望见谅!
——————————————————————————————

首先先写上几句话:献给坚持创作的我和点开这篇文章希望进步的你
1.人生的路上,如果懂得体谅、宽容,日子就会很温馨、很安宁。人生路上,如果缺少体谅,不能理解,没有谦让,日子就会越过越烦恼。生活中的很多烦恼,就是源于我们不能体谅,过分在意了自己的主张,互不理解,互不相让,伤了彼此的心灵。生活,很多时候,就是一种体谅,一种理解。

2.人生的奋斗目标不要太大,认准了一件事情,投入兴趣与热情坚持去做,你就会成功。

3.人生在世不能失去的四样东西:坚韧的自制力,冷静的大脑,对生活的希望和相信自己的信心。

4.喜欢的人,总是靠伤害我来长大,最后拿成熟稳重去爱别的人,虽然感情就是前人栽树后人乘凉的道理,但是我教会你爱不是让你去爱别人的。

5生活从来不会刻意亏欠谁,它给了你一片阴影,必会在不远的地方撒下阳光。不要辜负了自己受过的苦难,这样善良又努力的一个你,一定会得到曾梦寐以求的所有美好!

高精度加法:

题目:

给定两个正整数(不含前导 0),计算它们的和。

输入格式

共两行,每行包含一个整数。

输出格式

共一行,包含所求的和。

数据范围

1≤整数长度≤100000

输入样例:

12
23

输出样例:

35

习题解析:

**高精度问题一般是在C++中的,其他Java或者Python不需要考虑这个问题。
在这里我们将一个数字倒着存储,即个位放在a[0],画一个图便于理解:**
在这里插入图片描述
**这样做的原因:
因为在运算的过程中,我们经常会出现进位这个情况,而如果最大位数放在a[0],进位时头插,需要将数组整体移动一位,不大方便,因此将各位放在a[0],进位时直接尾插是很方便的哦!!!**

代码:

#include<iostream>
#include<vector>

using namespace std;

vector<int> add(vector<int> &A,vector<int> &B)
{
    vector<int> C;
    int t=0;
    for(int i=0;i<A.size()||i<B.size();i++)
    {
        if(i<A.size()) t+=A[i];
        if(i<B.size()) t+=B[i];
        C.push_back(t%10);
        t/=10;
    }
    if(t) C.push_back(1);
    
    return C;
}

int main()
{
    string a,b;
    vector<int> A,B;
    cin>>a>>b;
    
    for(int i=a.size()-1;i>=0;i--) A.push_back(a[i]-'0');
    for(int i=b.size()-1;i>=0;i--) B.push_back(b[i]-'0');
    
    auto C=add(A,B);
    
    for(int i=C.size()-1;i>=0;i--) printf("%d",C[i]);
    return 0;
}

在这里插入图片描述

高精度减法:

题目:

给定两个正整数(不含前导 0),计算它们的差,计算结果可能为负数。

输入格式

共两行,每行包含一个整数。

输出格式

共一行,包含所求的差。

数据范围

1≤整数长度≤105

输入样例:

32
11

输出样例:

21

做法解析:

第一步:要先判断A,B谁大谁小
第二步:写出sub相减函数
第三步:去掉前置0,如003

代码:

// 给定两个正整数

#include <iostream>
#include <vector>

using namespace std;

bool cmp(vector<int>& A, vector<int> &B)
{
    if(A.size() != B.size()) return A.size() > B.size();  //直接ruturn 了就不用else

    for(int i = A.size(); i >= 0; i--)
        if(A[i] != B[i])
            return A[i] > B[i];

    return true;
}

vector <int> sub(vector<int>& A, vector<int> &B)
{
    vector<int> C;
    int t = 0;
    for(int i = 0; i < A.size(); i++)
    {
        t = A[i] - t;
        if(i < B.size()) t -= B[i];
        C.push_back((t + 10) % 10 ); // 合而为1
        if(t < 0)  t = 1;
        else t = 0;

    }

    while(C.size() > 1 && C.back() == 0) C.pop_back();  //去掉前导0

    return C;
}

int main()
{
    string a ,b;
    vector<int> A, B;

    cin >> a >> b ;

    for(int i = a.size() - 1; i >= 0; i--) A.push_back(a[i] - '0');
    for(int i = b.size() - 1; i >= 0; i--) B.push_back(b[i] - '0');

    if (cmp(A,B)) 
    {
        auto C = sub(A, B);
        for(int i = C.size() - 1; i >= 0; i--) printf("%d", C[i]);
        return 0;
    }
    else
    {
        auto C = sub(B, A);
        printf("-");
        for(int i = C.size() - 1; i >= 0; i--) printf("%d", C[i]);
        return 0;
    }
}

最后

十分感谢你可以耐着性子把它读完和我可以坚持写到这里,送几句话,对你,也对我:

1.生活从来不会刻意亏欠谁,它给了你一片阴影,必会在不远的地方撒下阳光。不要辜负了自己受过的苦难,这样善良又努力的一个你,一定会得到曾梦寐以求的所有美好!

2.生活从来不会刻意亏欠谁,它给了你一片阴影,必会在不远的地方撒下阳光。不要辜负了自己受过的苦难,这样善良又努力的一个你,一定会得到曾梦寐以求的所有美好!

3.你的气质来源于你走过的路,读过的书,诗句是天才创造的,但是诗意却可以属于每一个追求真善美的灵魂。

4.我我始终相信读过的所有书都不会白读,它会在未来的某一个场合,帮助我变得更出色。

5.我始终相信读过的所有书都不会白读,它会在未来的某一个场合,帮助我变得更出色。

最后如果觉得我写的还不错,请不要忘记==点赞==✌,==收藏==✌,加==关注==✌哦(。・ω・。)

愿我们一起加油,奔向更美好的未来,愿我们从懵懵懂懂的一枚==菜鸟==逐渐成为==大佬==。加油,为自己点赞!

目录
相关文章
|
4月前
|
Python
【备战蓝桥杯】——循环结构
【备战蓝桥杯】——循环结构
43 1
|
3月前
|
Java API
备战第十五届蓝桥杯Java软件开发大学B组常见API记录
备战第十五届蓝桥杯Java软件开发大学B组常见API记录
24 0
|
4月前
|
算法 安全 定位技术
【刷题】备战蓝桥杯 — dfs 算法
dfs算法在数据较小的情况下可以使用。 一定一定要确定好终止条件,避免栈溢出。 相应做好回溯,保证每次的遍历都是不一样的选择,避免少结果。 针对题目进行对应细节处理,有能力的话可以进行剪枝优化!!!
38 0
|
4月前
蓝桥杯备战刷题-滑动窗口
蓝桥杯备战刷题-滑动窗口
28 0
|
4月前
|
索引 Python 容器
【备战蓝桥杯】探索Python内置标准库collections的使用
【备战蓝桥杯】探索Python内置标准库collections的使用
77 1
|
4月前
|
开发者 Python
【备战蓝桥杯】如何使用Python 内置模块datetime去计算我与CSDN相遇的天数
【备战蓝桥杯】如何使用Python 内置模块datetime去计算我与CSDN相遇的天数
60 1
|
4月前
【备战蓝桥杯】——Day1
【备战蓝桥杯】——Day1
42 0
|
4月前
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
84 0
|
4月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
68 0
|
4月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
68 0