首页 > 其他分享 >高精度减法笔记

高精度减法笔记

时间:2024-10-08 19:11:58浏览次数:6  
标签:10 return temp 高精度 int 笔记 vector 减法 size

高精度减法

vector<int>u, v;

bool cmp(vector<int> &u, vector<int> &v) {//比较两个数大小
	if (u.size() != v.size()) //前数不等于后数
		return u.size() > v.size();//返回前数是否大于后数,是=ture,否=false
	else for (int i = u.size()-1; i >=0; i--) //前数等于后数,遍历数组
			if (u[i] != v[i])//从高位开始比较,如果值不同
				return u[i] > v[i];//返回前值是否大于后值,是=ture,否=false
	return 1;//两个数完全相等,返回1或0都行
}

vector<int> sub(vector<int>& u, vector<int>& v) {//高精度减法
	vector<int> temp;//声明数组存储差值
	for (int i = 0, t = 0; i < u.size(); i++) {//以最大数的位数开始遍历,声明定义t作为最大数的每一位的值
		t = u[i] - t;//t为最大数当前i位的值减去上一轮借位的值
		if (i < v.size())t -= v[i];//当最大数的i位小于最小数的最低位数时,执行两个数的第i位做差
		temp.push_back((t + 10) % 10);//给temp数组末尾塞入做差后的值
		/*(t + 10) % 10 一石二鸟,当差值t大于0时取对10的余数,差值小于0时,加10就大于0,再对10取余
		两种情况都能取得t的最后一位的值,塞入temp的末尾*/
		if (t < 0) t = 1;//t小于0时,则借位到下一轮的t
		else t = 0;//不借位,将t初始化为0,进入下一轮
	}
	while (temp.size() > 1 && temp.back() == 0) temp.pop_back();//若有前导0,则循环清除前导0
	return temp;//返回数组
}


int main() {
	string a, b;
	cin >> a >> b;
	for (int i = a.size() - 1; i >= 0; i--) u.push_back(a[i] - '0');//倒序读入数组
	for (int i = b.size() - 1; i >= 0; i--) v.push_back(b[i] - '0');
	if (cmp(u, v)) {//比较两个数大小,分类讨论
		vector<int> c = sub(u, v);
		for (int i = c.size() - 1; i >= 0; i--) printf("%d", c[i]);
	}
	else
	{
		vector<int>c = sub(v, u);
		printf("-");//小数减大数,添加负号
		for (int i = c.size() - 1; i >= 0; i -- ) printf("%d", c[i]);
	}
	return 0;
}

标签:10,return,temp,高精度,int,笔记,vector,减法,size
From: https://www.cnblogs.com/dianman/p/18452309

相关文章

  • Django学习笔记十四:系统框架总结
    Django系统框架的主要特点Django是一个功能强大的PythonWeb框架,以下是对其系统框架的总结:一、MTV架构模型(Model):负责与数据库交互,处理数据的存储、检索、更新和删除等操作。通过定义数据模型类,Django可以自动生成数据库表结构,或者根据现有的数据库反向生成模型类......
  • 前端开发笔记--黑马程序员1
    文章目录前端开发工具--VsCode前端开发基础语法VsCode优秀插件Chinese--中文插件AutoRenameTag--自动重命名插件openinbrowserOpeninDefaultBrowserOpeninOtherBrowserLiveServer--实时预览前端开发工具–VsCode轻量级与快速启动快速加载:VSCode......
  • systemverilog笔记
    变量类型变量名状态数是否带符号比特数logic4无1bit2无1byte2有8shortint2有16int2有32longint2有64integer4有32time4无64$isunknown(表达式):在表达式任意位出现X或者Z时返回1。数组数组初始化使用单引号加大括......
  • 软件测试学习笔记丨Mitmproxy使用
    本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/32334一、简介Mitmproxy是一款开源、免费的代理工具,支持Mac、Windows、Linux。相比其他代理工具,可以通过Python和Mitmproxy工具本身的插件机制,实现通过脚本对Mitmproxy的完全控制。强大的可拓展性和可定制性,可以让测试工程......
  • 深度除氟工艺-电化学法(学习笔记)
    电化学法通过以下操作达到深度除氟的目的:一、电化学原理应用电化学法主要利用电化学原理,在特定的电解装置中,通过电极的氧化还原反应,将废水中的氟离子进行转化和处理。这种转化可以是将氟离子转化为不溶性的氟化物,使其沉积在电极表面或通过其他方式从废水中分离出来。二、......
  • ROS理论与实践学习笔记——3 ROS运行管理之ROS话题名称设置
        名称重映射是为名称起别名,为名称添加前缀,该实现比节点重名更复杂些,不单是使用命名空间作为前缀、还可以使用节点名称最为前缀。两种策略的实现途径有多种:(1)rosrun命令(2)launch文件(3)编码实现3.1rosrun设置话题重映射    rosrun名称重映射语法:rorun......
  • Docker 学习笔记-基本概念与安装
    Docker学习笔记基本概念镜像:Docker的镜像概念类似于虚拟机里的镜像,是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。DockerFile;镜像可以基于DockerFile构建,DockerFile是一个描述文件,里面包含若干条命令,每条命令都会对基础文件系统创建新......
  • 笔记——数论
    蓝月の笔记——数论篇Part0约定令\(\mathcal{P}\)为质数的集合所有时间复杂度均指上界Part1质数,\(\gcd\)质数就是只有\(1\)和本身两个因数的数,公因数就是同时使多个数的因数的数,\(\gcd\)就是最大的公因数质数求法:欧拉筛在埃氏筛的基础上优化,让每个合数都只被一个......
  • 《机器学习初步》笔记 第一章
    第一章绪论1.1引言机器学习的经典定义:利用经验(数据)改善系统自身的性能经典的机器学习过程:机器学习最重要的理论模型:PAC(概览近似正确)1.2基本术语数据集:一组记录的集合学习/训练:通过执行某个学习算法,得到模型,学的的模型对应数据的某种潜在规律示例:不包含结果(标记label)......
  • 机器学习第一章学习笔记
    第一章绪论1.1引言  在计算机系统中,“经验”通常以"数据"形式存在。书中采用"模型"泛指从数据中学得的结果。1.2基本术语  记录的集合称为一个"数据集",每条记录是关于一个事件或对象的描述,称为一个"示例"(instance)或"样本"(samp1e)。(注意:有时候整个数据集也被......