36.哀家要长脑子了!--高精度的+-*/

1.791. 高精度加法 - AcWing题库

思路:把大数的每一位数当作数组的元素存入到数组中。倒序存储也是说,个位放在下标为0        的位置,然后每一位两两操作,做好进位的工作。

// C = A + B
vector<int> add(vector<int> &A, vector<int> &B){vector<int> C;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 = A.size() - 1; i >= 0; i--)    cout << A[i];}

另一个版本大差不差

// C = A + B
vector<int> add(vector<int> &A, vector<int> &B){vector<int> C;if(A.size() < B.size()) return add(B, A);for(int i = 0; i < A.size; i++){\// 有数就加上 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 = A.size() - 1; i >= 0; i--)    cout << A[i];}
 2.792. 高精度减法 - AcWing题库

模板

// 标记 A 和 B 的大小
bool cmp(vector<int> &A, vector<int> &B){if(A.size() != B.size())    return A.size() > B.size();for(int i = A.size() - 1; i >= 0; i++)if(A[i] != B[i]) return A[i] > B[i];return true;
}// C = A - B
vector<int> sub(vector<int> &A, vector<int> &B){vector<int> C;for(int i = 0, t = 0; i < A.size(); i++){// 处理上一位数字的进位t = A[i] - t;if(i < B.size())   t -= B[i];// 将每位数字的结果映射到0-9之间C.push_back( (t+10) % 10);// 如果t<0 说明此时A中的这个数字比B中的这个数字要小 要借位if(t < 0) t = 1;else t = 0;}// 去掉前导0while(C.size() > 1 && C.back() == 0)  C.pop_back();return C;
}int main(){string 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){auto C = sub(A, B);for(int i = C.size() - 1; i >= 0; i--) cout << C[i];    }else{cout << "-";auto C = sub(B, A);for(int i = C.size() - 1; i >= 0; i--) cout << C[i];    }return 0;
}
3.793. 高精度乘法 - AcWing题库

模板

vector<int> mul(vector<int> &A, int b){vector<int> C;int t = 0;    for(int i = 0; i < A.size() || t; i++){// 如果A中的数字还没算完if(i < A.size()) t += A[i] * b;C.push_back(t % 10);// 进位t /= 10;}// 去掉前导0while(C.size() > 1 && C.back() == 0)  C.pop_back();return C;
}    
4.794. 高精度除法 - AcWing题库

模板

// C = A / b C是商 r是余数
vector<int> div(vector<int> &A, int &b, int &r){vector<int> C;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;  
}

因为除法是先从高位运算的,为了与高精度的加减乘统一,所以最后得到的商数组倒序反转一下

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

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

相关文章

Spring Boot手写starter

目录 1.介绍1.1 什么是 Starter 机制&#xff1f;1.2 Starter 机制的工作原理&#xff1f; 2.starter自定义2.1 新建工程2.2 自定义注解2.3 创建增强类2.4 创建自动配置类2.5 配置自动配置2.6 测试 1.介绍 1.1 什么是 Starter 机制&#xff1f; Starter 机制是 Spring Boot 提…

BulingBuling - 作息安排 [Reset Your Routine] - 1

The Blinkist Team: [ Reset Your Routine ] 如果你发现自己很难按部就班&#xff0c;或者陷入工作效率低的困境&#xff0c;那么你可能需要重新调整一下作息时间&#xff01;从睡眠和营养&#xff0c;到待办事项和井井有条--本指南为你提供了各种技巧和策略&#xff0c;让你的…

自然之美无需雕琢

《自然之美&#xff0c;无需雕琢 ”》在这个颜值至上的时代&#xff0c;但在温馨氛围中&#xff0c;单依纯以一种意想不到的方式&#xff0c;为我们诠释了自然之美的真谛。而医生的回答&#xff0c;如同一股清流耳目一新。“我说医生你看我这张脸&#xff0c;有没有哪里要动的。…

【数据结构(邓俊辉)学习笔记】高级搜索树01——伸展树

文章目录 1. 逐层伸展1. 1 宽松平衡1. 2 局部性1. 3 自适应调整1. 4 逐层伸展1. 5 实例1. 6 一步一步往上爬1. 7 最坏情况 2. 双层伸展2.1 双层伸展2.2 子孙异侧2.3 子孙同侧2.4 点睛之笔2.5 折叠效果2.6 分摊性能2.7 最后一步 3 算法实现3.1 功能接口3.2 伸展算法3.3 四种情况…

linux下的网络编程

网络编程 1. 网络基础编程知识1.1网络字节序问题1.2 常用socket编程接口1.2.1 sockaddr1.2.2 ip地址转换函数1.2.4 socket()1.2.3 bind()1.2.4 listen()1.2.5 accept()1.2.6 connect() 1.3 以udp为基础的客户端连接服务器的demo1.4 以udp为基础的的服务器聊天室功能demo1.5 基于…

Spark SQL----内置函数Conversion Functions Conditional Functions

Spark SQL----内置函数Conversion Functions& Conditional Functions Conversion Functions 例子&#xff1a; -- cast SELECT cast(10 as int); --------------- |CAST(10 AS INT)| --------------- | 10| ---------------Conditional Functions 例子&#x…

Apispec,一个用于生成 OpenAPI(Swagger)规范的 Python 库

目录 01什么是 Apispec&#xff1f; 为什么选择 Apispec&#xff1f; 安装与配置 02Apispec 的基本用法 生成简单的 API 文档 1、创建 Apispec 实例 2、定义 API 路由和视图 3、添加路径到 Apispec 集成 Flask 和 Apispec 1、安装…

Spring Boot与Jenkins的集成

Spring Boot与Jenkins的集成 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 一、引言 Jenkins作为一个开源的持续集成&#xff08;CI&#xff09;和持续交付…

计算机行业现状分析与发展前景

一、行业竞争现状 技术创新不断涌现&#xff1a;计算机行业在技术创新方面取得了长足的进步&#xff0c;如云计算、大数据、人工智能、物联网等前沿技术不断涌现&#xff0c;这些技术不仅推动了行业的快速发展&#xff0c;也为传统产业的转型升级提供了有力支撑。 行业竞争日益…

Linux开发:进程间通过Unix Domain Socket传递数据

进程间传递数据的方式有很多种,Linux还提供一种特殊的Socket用于在多进程间传递数据,就是Unix Domain Socket(UDS)。 虽然通过普通的Socket也能做到在多进程间传递数据,不过这样需要通过协议栈层的打包与拆包,未免有些浪费效率,通过UDS,数据仅仅通过一个特殊的sock文件…

熔断降级处理

什么是熔断降级 微服务雪崩效应 当微服务运行不正常&#xff0c;会导致无法正常调用微服务&#xff0c;此时会出现异常&#xff0c;如果这种异常不去处理&#xff0c;可能会导致雪崩效应 微服务的雪崩效应表现在服务与服务之间调用&#xff0c;当其中一个服务无法提供服务时…

FreeU: Free Lunch in Diffusion U-Net——【代码复现】

这篇文章发表于CVPR 2024&#xff0c;官网地址&#xff1a;ChenyangSi/FreeU: FreeU: Free Lunch in Diffusion U-Net (CVPR2024 Oral) (github.com) 一、环境准备 提前准备好python、pytorch环境 二、下载项目依赖 demo下有一个requirements.txt文件&#xff0c; pip inst…

Symfony框架:优雅构建PHP应用的强有力工具

在PHP开发的广阔天地中&#xff0c;Symfony框架以其高性能、高安全性和组件化的特点&#xff0c;成为了构建现代Web应用的热门选择。Symfony是一个基于MVC&#xff08;模型-视图-控制器&#xff09;模式的全栈框架&#xff0c;提供了一套丰富的功能和工具&#xff0c;帮助开发者…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第55课-芝麻开门(语音 识别 控制3D纪念馆开门 和 关门)

【WEB前端2024】3D智体编程&#xff1a;乔布斯3D纪念馆-第55课-芝麻开门&#xff08;语音识别控制3D纪念馆开门和关门&#xff09; 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtn…

2.pwn的linux基础(计算机内部数据结构存储形式)

linux基础 保护层级: 分为四个ring0-ring3 一般来说就两个&#xff0c;0和3 0为内核 3为用户 权限: 用户分为多个组 文件和目录等等的权限一般都是三个&#xff0c;即可读可写可执行。 读:R&#xff0c;写:W&#xff0c;执行:X 赋予一个可执行文件执行权限就是chmod x file…

qt 如何添加子项目

首先我们正常流程创建一个项目文件&#xff1a; 这是我已经创建好的&#xff0c;请无视红线 然后找到该项目的文件夹&#xff0c;在文件夹下创建一个文件夹&#xff0c;再到创建好的文件夹下面创建一个 .pri 文件&#xff1a; &#xff08;创建文件夹&#xff09; &#xff08…

字节跳动与南开联合开源 StoryDiffusion:一键生成漫画和视频故事的神器!完全免费!

大家好&#xff0c;我是程序员X小鹿&#xff0c;前互联网大厂程序员&#xff0c;自由职业2年&#xff0c;也一名 AIGC 爱好者&#xff0c;持续分享更多前沿的「AI 工具」和「AI副业玩法」&#xff0c;欢迎一起交流~ 漫画&#xff0c;是多少人童年的回忆啊&#xff01; 记得小学…

#数据结构 链式栈

1. 概念 链式栈LinkStack 逻辑结构&#xff1a;线性结构物理结构&#xff1a;链式存储栈的特点&#xff1a;后进先出 栈具有后进先出的特点&#xff0c;我们使用链表来实现栈&#xff0c;即链式栈。那么栈顶是入栈和出栈的地方&#xff0c;单向链表有头有尾&#xff0c;那我…

Http中get与post的区别,99%的人都理解错了吧

Get和Post是HTTP请求的两种基本方法&#xff0c;要说它们的区别&#xff0c;接触过WEB开发的人都能说出一二。 最直观的区别 就是Get把参数包含在URL中&#xff0c;Post通过request body传递参数。 你可能自己写过无数个Get和Post请求&#xff0c;或者已经看过很多权威网站总…

【ARMv8/v9 GIC 系列 5.7 -- 中断路由与系统寄存器】

请阅读【ARM GICv3/v4 实战学习 】 文章目录 Interrupt routing and System register access与Group 0中断相关的寄存器与Group 1中断相关的寄存器公共寄存器Interrupt routing and System register access 在执行AArch64状态时,中断路由到异常级别(Exception Level)是由以…