【高精度算法】【蓝桥杯备考训练】:高精度加法、高精度减法、高精度乘法、高精度除法【已更新完成】

目录

1、高精度加法

2、高精度减法

3、高精度乘法

4、高精度除法


1、高精度加法

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

输入格式

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

输出格式

共一行,包含所求的和。

数据范围

1≤整数长度≤100000

输入样例:
12
23
输出样例:
35
思路:

vector数组中存储的一串数字是由低位到高位的(低位到高位好操作),t用来存储进位

代码:
#include<iostream>
using namespace std;
#include<string>
#include<vector>
vector<int> add(vector<int> &A,vector<int> &B)
{if(A.size()<B.size())return add(B,A);vector<int>C;int t=0;for(int i=0;i<A.size();i++){t=t+A[i];if(i<B.size())t=t+B[i];C.push_back(t%10);t=t/10;}if(t)C.push_back(t);return C;
}
int main()
{string a,b;cin>>a>>b;vector<int>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');vector<int>res=add(A,B);for(int i=res.size()-1;i>=0;i--)cout<<res[i];return 0;
} 

2、高精度减法

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

输入格式

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

输出格式

共一行,包含所求的差。

数据范围

1≤整数长度≤1e5

输入样例:
32
11
输出样例:
21
思路:

先比较两个数的大小,总是用大数减小数,如果是结果负数的情况结果res=-(B-A)

代码:
#include<iostream>
using namespace std;
#include<string>
#include<vector>
//judge if A>=B
bool cmp(vector<int> A,vector<int> B)
{if(A.size()!=B.size())return A.size()>B.size();//the position that A.size()==B.size()else{for(int i=A.size()-1;i>=0;i--){if(A[i]!=B[i])return A[i]>B[i];}return true;}
}
vector<int> sub(vector<int> &A,vector<int> &B)
{//now A is always bigger than B or equal to Bvector<int>C;int t=0;for(int i=0;i<A.size();i++){if(i<B.size())t=A[i]-B[i]-t;else t=A[i]-t;C.push_back((t+10)%10);if(t<0)t=1;else t=0;}while(C.size()>1 && C.back()==0)C.pop_back();return C;
}
int main()
{string a,b;cin>>a>>b;vector<int>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)){vector<int>res=sub(A,B);for(int i=res.size()-1;i>=0;i--)cout<<res[i];}else{vector<int>res=sub(B,A);cout<<"-";for(int i=res.size()-1;i>=0;i--)cout<<res[i];}return 0;
} 

3、高精度乘法

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

输入格式

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

输出格式

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

数据范围

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

输入样例:
2
3
输出样例:
6
思路:

适用于一个大数乘一个小数,t用来存储进位

代码:
#include<iostream>
using namespace std;
#include<vector>
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;}vector<int>s={0};if(C.back()!=0)return C;else return s;
}
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--)cout<<C[i];return 0;
}

4、高精度除法

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

输入格式

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

输出格式

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

数据范围

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

输入样例:
7
2
输出样例:
3
1
思路:

适用于大数除小数,r用来存储余数

代码:
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
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;int b,r;cin>>a>>b;vector<int>A;for(int i=a.size()-1;i>=0;i--)A.push_back(a[i]-'0');auto C=div(A,b,r);for(int i=C.size()-1;i>=0;i--)cout<<C[i];cout<<endl<<r<<endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/823356.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二分查找的时间复杂度的讲解

二分查找的代码&#xff1a; 二分查找的时间复杂度&#xff1a; 最坏的情况&#xff1a; 就是找不到和查找区间只剩一个值的时候&#xff0c;这两种都是最坏的结果&#xff0c;假设查找了x次&#xff0c;达到了最坏的结果&#xff1a; N代表每一次折半区间数据的个数&#xf…

基于unlink 和黑白名单实现删除脚本(日志清理、历史备份清理)

零 摘要 rm 过于强大&#xff0c;当使用root 用运行删除脚本时&#xff0c;总是担心误删除&#xff0c;本脚本改用unlink 命令删除单文件&#xff0c;使用黑白名单限制删除文件所在目录&#xff0c;只有被删除文件不在黑名单目录下且同时在白名单目录下才能删除 一 脚本 #!/…

GNeRF的一些具体细节

Abstract GNeRF&#xff0c;一个结合生成对抗网络(GAN)和神经辐射场(NeRF)重建的框架&#xff0c;用于未知甚至随机初始化相机姿态的复杂场景。最近基于 NERF 的进展已经获得了显着的现实新视图合成的普及。然而&#xff0c;大多数方法都严重依赖于摄像机姿态的精确估计&#…

【过程11】——教育被点燃的路上

这里写目录标题 一、背景二、过程1.两年四十万的认知改变2.三年打工仔的经历改变3.一年计算机的人生蜕变4.后面的展望 三、总结 一、背景 人生在世&#xff0c;对于一些事情的笃信笃行&#xff1b;背后真的会有莫大无以言表的波涛。 这个事情到现在已经五年半左右时间了&#…

分类算法——文章分类(五)

文章分类计算 计算结果 P(C|Chinese,Chinese,Chinese,Tokyo,Japan)-->P(Chinese, Chinese, Chinese, Tokyo, Japan|C) * P(C)/P(Chinese, Chinese, Chinese, Tokyo, Japan) P(Chinese|C)5/8 P(Tokyo|C) 0 P(Japan|C) 0思考&#xff1a;我们计算出来某个概率为0&#xff0c;…

mybatis基础篇-mybatis使用-mybatis工具类封装

mybatis官网 https://mybatis.org/mybatis-3/zh_CN/getting-started.html 官网跳转连接 jar包下载 https://download.csdn.net/download/weixin_44201223/89146621 本练习所需jar包资源下载 1、创建数据库数据 # 创建数据库 create database test; use test; # 创建表 cre…

Qt学习笔记(一)

信号与槽机制 本质上就是观察者模式&#xff1b; ------------------------------------------信号槽是Qt框架引以为豪的机制之一。所谓信号槽&#xff0c;实际就是观察者模式。当某个事件发生之后&#xff0c;比如&#xff0c;按钮检测到自己被点击了一下&#xff0c;它就会发…

导致苹果IPA应用APP打开提示“已到期”的原因及解决办法

哈喽&#xff0c;大家好呀&#xff0c;淼淼又来和大家见面啦&#xff0c;有许多小伙伴们在使用iOS设备的时候&#xff0c;有时候可能会遇到打开某个IPA应用时出现“已到期”的提示&#xff0c;这种情况通常会发生在开发者证书过期、时间设置问题、重新签名错误等情况下。这一期…

力扣452 用最少数量的箭引爆气球 Java版本

文章目录 题目描述代码 题目描述 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0c;其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完…

李沐46_语义分割和数据集——自学笔记

语义分割 语义分割将图片中的每个像素分类到对应的类别。 实例分割&#xff08;目标检测的进化版本&#xff09; 如果有物体&#xff0c;会区别同一类的不同物体。 语义分割重要数据集&#xff1a;Pascal VOC2012 %matplotlib inline import os import torch import torch…

Java -- (part12)

一.权限修饰符 1.属性:用private ->封装思想 2.成员方法public ->便于调用 3.构造public ->便于new对象 二.final关键字 1.修饰类 a.格式 -- public final class 类名 b.特点:不能被继承 2.修饰方法 a.格式:修饰符 final 返回值类型 方法名(形参){} b.特点…

C++内存管理——new/delete、operator new/operator delete

内存管理 int globalVar 1; static int staticGlobalVar 1; void Test() {static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] "abcd";const char* pChar3 "abcd";int* ptr1 (int*)malloc(sizeof(int) * 4);int* pt…

c++ lambda表达式的使用方法

c lambda表达式的使用方法 C11引入了lambda表达式&#xff0c;它是一种轻量级的匿名函数&#xff0c;允许我们在需要函数的地方直接定义函数&#xff0c;而无需专门声明函数。lambda表达式的语法简洁&#xff0c;并且非常灵活&#xff0c;可以捕获外部变量&#xff0c;具有与普…

Mapper 编写的常用方式

第一种&#xff1a;接口实现类继承 SqlSessionDaoSupport&#xff1a; 使用此种方法需要编写mapper 接口&#xff0c;mapper 接口实现类、mapper.xml 文件。 1&#xff1a; 在 sqlMapConfig.xml 中配置 mapper.xml 的位置 <mappers><mapper resource"mapper.x…

技术速递|.NET 智能组件简介 – AI 驱动的 UI 控件

作者&#xff1a;Daniel Roth 排版&#xff1a;Alan Wang AI 的最新进展有望彻底改变我们与软件交互和使用软件的方式。然而&#xff0c;将 AI 功能集成到现有软件中可能面临一些挑战。因此&#xff0c;我们开发了新的 .NET 智能组件&#xff0c;这是一组真正有用的 AI 支持的 …

OCP-数据库中的小米SU7

oracle ocp ​数据库中的SU7 ​好看又好用 需要找工作和落户的快来

帮助中心最核心的内容,你都知道吗?

帮助中心&#xff0c;其实就是个解决问题的“百事通”。当你在使用某产品时&#xff0c;遇到了一些问题&#xff0c;就可以到帮助中心去查询相关的信息以解决问题。很多公司都会搭建帮助中心&#xff0c;那么&#xff0c;帮助中心的核心内容都有哪些呢&#xff1f;这就是今天我…

Chrome 中安装 Vue 插件 vue-devtools 的简易教程

Vue.js 是一种流行的 JavaScript 框架&#xff0c;用于构建交互式的用户界面。它提供了丰富的开发工具和插件&#xff0c;其中一个非常有用的插件就是 vue-devtools。vue-devtools 可以让开发者在 Chrome 浏览器中轻松调试和检查 Vue 组件的状态、事件和数据流。本篇教程将向你…

损失函数:Cross Entropy Loss (交叉熵损失函数)

损失函数&#xff1a;Cross Entropy Loss &#xff08;交叉熵损失函数&#xff09; 前言相关介绍Softmax函数代码实例 Cross Entropy Loss &#xff08;交叉熵损失函数&#xff09;Cross Entropy Loss与BCE loss区别代码实例 前言 由于本人水平有限&#xff0c;难免出现错漏&am…

【yolo数据集合并方法】

yolo数据集合并方法 1.数据集容2.数据集合并 1.数据集容 包含训练集、验证集和测试集。 每一个数据集中包含图像文件夹和标签文件夹。 yaml文件中定义了配置参数&#xff0c;包括目标识别的class类别&#xff1a; 2.数据集合并 需要修改labels文件夹下txt文件class信息&…