备战蓝桥杯【高精度乘法和高精度除法】

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

前言

今天这一篇文章是借着上面一篇文章继续写关于高精度的问题:高精度乘法和高精度除法。
如果有错误,请谅解,请私信于我,谢谢!
——————————————————————————————

首先先写上几句话:献给坚持创作的我和点开这篇文章希望进步的你
1.不要对任何人抱有希望,每个人都在皱着眉头忙着应付自己的生活。

2.这个世界上的所有灵魂,都是半人半鬼,看得太近,其实都无法入眼。

3.你终会坠入柴米油盐的日子;无论你再怎么感性。

4.真正的美好都在别人的朋友圈里,而我的美好,总会被生活中的琐事打的七零八碎。

5.关有些事情,我们心里都明白,可是不知道为什么,就是不能说破。

高精度乘法:

题目:

给定两个非负整数(不含前导 0) A 和 B,请你计算 A×B 的值。

输入格式

共两行,第一行包含整数 A,第二行包含整数 B。

输出格式

共一行,包含 A×B 的值。

数据范围

1≤A的长度≤100000,
0≤B≤10000

输入样例:

2
3

输出样例:

6

做题思路:

先实现一个函数mul,它可以将一个整数向量A和一个整数b相乘,并返回一个新的整数向量C。在main函数中,它首先从输入中读取一个字符串a和一个整数b,然后将字符串a转换为整数向量A,最后调用mul函数将A和b相乘,并将结果输出到屏幕上。

代码:

#include <iostream>
#include <vector>

using namespace std;


vector<int> mul(vector<int> &A, int b)
{
    vector<int> C;

    int t = 0;
    for (int i = 0; i < A.size() || t; i ++ )
    {
        if (i < A.size()) t += A[i] * b;
        C.push_back(t % 10);
        t /= 10;
    }

    while (C.size() > 1 && C.back() == 0) C.pop_back();

    return C;
}


int main()
{
    string a;
    int b;

    cin >> a >> b;

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

    auto C = mul(A, b);

    for (int i = C.size() - 1; i >= 0; i -- ) printf("%d", C[i]);

    return 0;
}

在这里插入图片描述

高精度除法:

题目:

给定两个非负整数(不含前导 0) A,B,请你计算 A/B 的商和余数。

输入格式

共两行,第一行包含整数 A,第二行包含整数 B。

输出格式

共两行,第一行输出所求的商,第二行输出所求余数。

数据范围

1≤A的长度≤100000,
1≤B≤10000,
B 一定不为 0

输入样例:

7
2

输出样例:

3
1

做题思路:

先实现一个整数除法的功能,它接受一个字符串表示的被除数和一个整数表示的除数,然后计算出商和余数,最后将结果输出到控制台。

代码:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> div(vector<int> &A, int b, int &r)
{
    vector<int> C;
    r = 0;
    for (int i = A.size() - 1; i >= 0; i -- )
    {
        r = r * 10 + A[i];
        C.push_back(r / b);
        r %= b;
    }
    reverse(C.begin(), C.end());
    while (C.size() > 1 && C.back() == 0) C.pop_back();
    return C;
}

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

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

    int r;
    auto C = div(A, B, r);

    for (int i = C.size() - 1; i >= 0; i -- ) cout << C[i];

    cout << endl << r << endl;

    return 0;
}

最后

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

1.小时候的难过会挂在嘴边,长大了才知道,真正的难过是表现不出来的。

2.不是努力了就有回报的,有些人光活着就要拼尽全力。

3.受了天大的委屈也一声不吭,一句安慰,却让我眼里进了风沙。

4.希望你永远都不会懂什么是:万般皆是命,半点不由人

5.所谓现实就是,人没有钱就不如鬼,汤没有盐就不如水,慢慢地你就会发现,一颗好的心,比不上一张好的嘴。

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

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

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