高精度问题
目录
算法实现基础
高精度加法A+B
测试链接
源代码
代码重点
高精度减法A-B
测试链接
源代码
代码重点
高精度乘法A*b和A*B
测试链接
源代码
代码重点
高精度除法A/b和A/B
测试链接
源代码
代码重点
高精度求和差积商余
算法实现基础
本算法调用STL库函数vector容器来使用
vector库的详细用法可查看单链双链表以及vector 中的部分内容
建议学习过vector的使用方法之后再来看本算法文章
由于Java与Python等语言拥有特性可以不使用高精度算法实现
因此本篇文章主要讲解的是c++的高精度算法
高精度加法A+B
测试链接
洛谷P1601 A+B Problem(高精)
源代码
c++解法
代码重点
1.数字的存储为倒叙存储。就vector容器的特点来说,在头部插入元素的难度以及数据处理量要远远大于在尾部插入元素,因此对于长整数的存储来说,在vector容器当中倒叙存储(注意字符数组与字符数组的转换),对于答案容器中的数字也是倒叙存储。
2.t的功能包括计算当前位数的和和为下一位的和做进位
3.如果t不为0时证明仍有进位,若此时答案数组全部已经计算完毕则证明要在最高位加一
4.auto类型的设定可以让系统根据函数的返回值类型自动对C进行类型限制
#include <iostream>
#include <vector>
using namespace std;
vector<int> add(vector<int> &A,vector<int> &B)
{vector<int> C;int t = 0;if(A.size()<B.size())return add(B,A);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;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');auto C = add(A,B);for(int i = C.size()-1;i >= 0;i -- )cout<<C[i];return 0;
}
Python解法
a=int(input())
b=int(input())
ans=a+b
print(ans)
高精度减法A-B
测试链接
洛谷P2142 高精度减法
源代码
c++解法
代码重点
1.cmp函数,当大整数A和B的长度不相等时,比较二者长度即可。当二者长度相同时,从最高位依次向下比,当有其中一位不相等时,返回本位比较值即可。当各位都相等时,则返回ture。经过此函数的处理之后,若布尔函数返回true则为A>=B的情况。若布尔函数返回false则为A<B的情况
2.sub函数:t为借位情况,经过cmp函数的调整之后A一定是大于等于B的,所以从最低为开始减,若此位运算结果小于0,则加10再对10取余为本位结果,必向高位进行了借位,因此在下一位运算时-1。若此位运算结果大于等于0,则不进行借位,下次运算时t为0。在进行运算之后,要进行去掉前导0的运算
3.main函数,依旧本着方便运算的原则对于大整数进行倒叙存储,根据cmp函数结果进行分流,当true时为正,倒叙输出C即可。当false时为负,首先输出一个负号,再倒序输出即可
#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();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)
{vector<int> C;int t = 0;for(int i = 0;i < A.size();i ++ ){t += A[i];if(i < B.size())t -= B[i];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)){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];}
}
Python3
a=int(input())
b=int(input())
ans=a-b
print(ans)
高精度乘法A*b和A*B
测试链接
洛谷P1303 A*B Problem
源代码
c++解法(b为短数据)
代码重点
1.c++代码为大整数乘以小整数,因此对于洛谷的那道题来说只能通过40%的数据。高精度大乘小的原理在于A从最低为乘b乘到最高位,其中的t为进位,乘b之后当前位为(t + A[i] * b)%10,进位为((t + A[i] * b)%10)/10
2.其余依旧是大整数通过string和vector进行逆序存储逆序输出
#include <iostream>
#include <vector>
using namespace std;
typedef long long ll;
vector<int> mul(vector<int> &A,ll &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;}return C;
}
int main()
{string a;ll 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;
}
Python3(B为长数据)
A*B太麻烦直接用Python3
a=int(input())
b=int(input())
ans=a*b
print(ans)
高精度除法A/b和A/B
测试链接
洛谷P1480 A/B Problem
源代码
c++解法(b为短数据)
代码重点
1.与高精度加法、减法、乘法不同的是,高精度除法在div函数之中对于A的遍历顺序为从为到头,因存储时为倒叙存储,即为从最高位开始计算。所以,r作为一个余数来模拟人工算法,因一道题当中很可能不仅仅只对于除法进行考察,很有可能是四则运算,因此为了方便起见,C需要反转一下便于后面的输出,注意在反转之后要去掉前导零,因洛谷上的b为小整数小于10^9,因此能够通过所有数据测试点
2.部分题目可能要输出余数,因此将输出余数那一行的注释去掉就ok了
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;
vector<int> div(vector<int> &A,ll &b,ll &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 = r % b; }reverse(C.begin(),C.end());while(C.size() > 1 && C.back() == 0)C.pop_back();return C;
}
int main()
{string a;ll 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;//此处输出的为余数return 0;
}
Python3解法(B为长数据)
a=int(input())
b=int(input())
ans=a//b
print(ans)
高精度求和差积商余
c++太太太太太头疼了还是Python3比较暴力省事
a=int(input())
b=int(input())
print(a+b)
print(a-b)
print(a*b)
print(a//b)
print(a%b)相关文章:
高精度问题
目录 算法实现基础 高精度加法AB 测试链接 源代码 代码重点 高精度减法A-B 测试链接 源代码 代码重点 高精度乘法A*b和A*B 测试链接 源代码 代码重点 高精度除法A/b和A/B 测试链接 源代码 代码重点 高精度求和差积商余 算法实现基础 本算法调用STL…...
kong网关使用pre-function插件,改写接口的返回数据
一、背景 kong作为api网关,除了反向代理后端服务外,还可对接口进行预处理。 比如本文提及的一个小功能,根据http header某个字段的值,等于多少的时候,返回一个固定的报文。 使用到的kong插件是pre-function。 除了上…...
【QT开发自制小工具】PDF/图片转excel---调用百度OCR API接口
前言 前几年WPS还可以免费处理5页以内的PDF转excel,现在必须付费了,而且百度其他在线的PDF转excel都是要收费的,刚好前几年调研过百度OCR的高精度含位置接口,依然是每天可以免费调用50次,本篇是基于此接口,…...
vue2 elementui if导致的rules判断失效
优化目标 和 目标转化出价必填的 切换的时候还会隐藏掉 这时候的if语句会导致rules判断失效 我的办法是把判断拉到外面 别放在el-form-item里 <section v-if"unitForm.baseTarget OCPM && unitForm.cpaTargetOptions ! undefined && unitForm.cpaTa…...
DevOps实战:用Kubernetes和Argo打造自动化CI/CD流程(2)
DevOps实战:用Kubernetes和Argo打造自动化CI/CD流程(2) 背景 架构图 正片开始之前,请一定先熟悉上面的架构图,跟着我的步骤,一步一步执行成功,相信后续根据自己特定的需求定制CI/CD。 需求 …...
嵌入式科普(25)Home Assistant米家集成意味着IOT的核心是智能设备
目录 一、概述 二、一张图说尽HA 三、HA的相关资料 四、米家集成划重点 五、总结 一、概述 小米Home Assistant 米家集成开源一周star近15k,迭代4个版本,12个贡献者 本文科普一下Home Assistant(简称HA)、米家集成ÿ…...
spring cloud gateway 3
**Spring Cloud Gateway 3** 是 Spring Cloud 生态系统中的一个重要组件,用于构建 API 网关,提供路由、监控、安全等关键功能。以下是关于 Spring Cloud Gateway 3 的详细介绍: ## 1. 什么是 Spring Cloud Gateway? **Spring Clou…...
html + css 淘宝网实战
之前有小伙伴说,淘宝那么牛逼你会写代码,能帮我做一个一样的淘宝网站吗,好呀,看我接下来如何给你做一个淘宝首页。hahh,开个玩笑。。。学习而已。 在进行html css编写之前 先了解下网页的组成和网页元素的尺寸吧 1.网页的组成 …...
游戏引擎学习第62天
回顾 我们目前正在开发一把虚拟剑,目的是让角色可以用这把剑进行攻击。最初的工作中,我们使用了一个摇滚位图作为虚拟剑的模型,并且实现了一个基本的功能:角色可以丢下剑。但这个功能并没有达到预期的效果,因为我们想…...
LeetCode - Google 校招100题 第6天 回溯法(Backtracking) (8题)
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/144743505 LeetCode 合计最常见的 112 题: 校招100题 第1天 链表(List) (19题)校招100题 第2天 树(Tree) (21题)校招100题 第3天 动态规划(DP) (20题)...
C项目 天天酷跑(下篇)
上篇再博客里面有,接下来我们实现我们剩下要实现的功能 文章目录 碰撞检测 血条的实现 积分计数器 前言 我们现在要继续优化我们的程序才可以使这个程序更加的全面 碰撞的检测 定义全局变量 实现全局变量 void checkHit() {for (int i 0; i < OBSTACLE_C…...
达梦数据守护搭建
主备库初始化 ./dminit path/dmdata/data db_nameDM01 instance_nameDMSVR01 port_num5236 page_size16 extent_size32 log_size500 case_sensitive1 SYSDBA_PWDDM01SYSDBA ./dminit path/dmdata/data db_nameDM02 instance_nameDMSVR02 port_num5236 page_size16 extent_size3…...
记录一次前端绘画海报的过程及遇到的几个问题
先看效果 使用工具 html2canvas import html2canvas from html2canvas// 绘画前的内容 我就不过多写了<div class"content" ref"contentRef" v-show"!imgShow"><img :src"getReplaceImg(friendObj.coverUrl)" alt"&qu…...
24.12.26 SpringMVCDay01
SpringMVC 也被称为SpringWeb Spring提供的Web框架,是在Servlet基础上,构建的框架 SpringMVC看成是一个特殊的Servlet,由Spring来编写的Servlet 搭建 引入依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc<…...
一分钟快速了解Ecovadis认证等级划分
Ecovadis认证等级划分,作为评估企业社会责任表现的重要标尺,其细致而严谨的体系为全球范围内的企业提供了一个可量化的衡量标准。这一认证等级不仅彰显了企业在环境保护、劳工权益、商业道德以及可持续发展等方面的努力与成就,更是企业向国际…...
科技云报到:人工智能时代“三大件”:生成式AI、数据、云服务
科技云报到原创。 就像自行车、手表和缝纫机是工业时代的“三大件”。生成式AI、数据、云服务正在成为智能时代的“新三大件”。加之全球人工智能新基建加速建设,成为了人类社会数字化迁徙的助推剂,让新三大件之间的耦合越来越紧密。从物理世界到数字世…...
【网络云计算】2024第52周-每日【2024/12/26】小测-理论实操-备份MySQL数据库并发送邮件-解析
文章目录 1. 编写备份脚本2. 设置定时任务3. 注意事项 【网络云计算】2024第52周-每日【2024/12/26】小测-理论&实操-备份MySQL数据库并发送邮件-解析 为了实现您提出的Discuz数据库备份任务,包括备份脚本、定时任务、备份成功邮件确认、脚本运行时长、备份后的…...
菜鸟带新鸟——基于EPlan2022的部件库制作(3D)
设备逻辑的概念: 可在布局空间 中和其它对象上放置对象。可将其它对象放置在 3D 对象上。已放置的对象分到组件的逻辑结构中。 将此属性的整体标识为设备逻辑。可使用不同的功能创建和编辑设备逻辑。 设备的逻辑定义 定义 / 旋转 / 移动 / 翻转:组…...
Level DB --- MemTable
MemTable是Level DB中重要的组件,它主要处理Level DB内存级别的增删查改。 基本数据结构 基础的存储数据结构如图1所示,这是一个存储单元的结构。其中1是internal key size,这里面包括两部分,一部分我们Level DB存储key-value中…...
【山西长治】《长治市市直部门政务信息化建设项目预算编制规范和预算编制标准》(长财行[2022]25号)-省市费用标准解读系列32
《长治市市直部门政务信息化建设项目预算编制规范和预算编制标准(试行)》(长财行[2022]25号)于2022年8月1日开始试行,此标准由长治市财政局、长治市行政审批管理局编制,是对信息化建设项目预算管理的基本要求,主要适用…...
快马平台AI助力:十分钟搭建技能学习交互原型
最近在尝试做一个技能学习平台的快速原型,发现用InsCode(快马)平台可以大大缩短开发时间。作为一个非专业前端开发者,我记录下这个十分钟搭建原型的实践过程,希望能给有类似需求的朋友一些参考。 项目构思与框架搭建 首先明确原型需要包含的五…...
乱倒渣土/建筑垃圾举报平台
https://jubao.mee.gov.cn/netreport/reportInfor/reportInfor 这里是可以直接勾选地图位置的。...
Wan2.2-I2V-A14B开源大模型:支持ONNX Runtime跨平台视频生成
Wan2.2-I2V-A14B开源大模型:支持ONNX Runtime跨平台视频生成 1. 模型概述与核心能力 Wan2.2-I2V-A14B是一款开源的文生视频大模型,基于ONNX Runtime实现跨平台部署能力。该模型能够将文本描述直接转化为高质量视频内容,支持多种分辨率和时长…...
提升五倍效率:基于快马平台优化openclaw数据采集工作流
最近在做一个数据采集项目时,发现传统的手动编写爬虫脚本效率实在太低了。每次遇到反爬机制或者需要调整采集策略时,都要花大量时间修改代码。后来尝试用openclaw结合InsCode(快马)平台来优化工作流,效率直接提升了五倍多,这里分享…...
Phi-3-mini-4k-instruct-gguf代码实例:curl健康检查+supervisor服务控制命令大全
Phi-3-mini-4k-instruct-gguf代码实例:curl健康检查supervisor服务控制命令大全 1. Phi-3-mini-4k-instruct-gguf简介 Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本,特别适合问答、文本改写、摘要整理和简短创作等场景。…...
新手福音:用快马ai生成交互式mysql安装教程,边看边练轻松入门
最近在帮朋友入门数据库开发时,发现很多新手卡在MySQL安装配置这一步。命令行操作对初学者确实不太友好,于是我尝试用InsCode(快马)平台做了个交互式学习项目,效果出乎意料的好。这里分享下具体实现思路,或许能帮到同样想学MySQL的…...
批量图片下载神器Image-Downloader:轻松获取高质量网络图片资源
批量图片下载神器Image-Downloader:轻松获取高质量网络图片资源 【免费下载链接】Image-Downloader Download images from Google, Bing, Baidu. 谷歌、百度、必应图片下载. 项目地址: https://gitcode.com/gh_mirrors/im/Image-Downloader 你是否曾为了收集…...
从零开始高效设计专业字体:FontForge实用指南
从零开始高效设计专业字体:FontForge实用指南 【免费下载链接】fontforge Free (libre) font editor for Windows, Mac OS X and GNULinux 项目地址: https://gitcode.com/gh_mirrors/fo/fontforge 你是否曾为找不到完美匹配设计需求的字体而苦恼?…...
告别评论采集困扰:用TikTokCommentScraper解锁数据收集效率
告别评论采集困扰:用TikTokCommentScraper解锁数据收集效率 【免费下载链接】TikTokCommentScraper 项目地址: https://gitcode.com/gh_mirrors/ti/TikTokCommentScraper 作为内容运营者,你是否曾因需要整理上百条视频评论而熬夜加班?…...
3分钟掌握:让PPT公式排版效率提升10倍的LaTeX插件使用指南
3分钟掌握:让PPT公式排版效率提升10倍的LaTeX插件使用指南 【免费下载链接】latex-ppt Use LaTeX in PowerPoint 项目地址: https://gitcode.com/gh_mirrors/la/latex-ppt 在学术报告和技术演示中,数学公式的排版质量直接影响内容专业性。然而&am…...
