当前位置: 首页 > article >正文

C++高精度算法的使用场景详解

描述如果要计算的数超过了long long怎么解决? —使用高精度加减乘除简单理解就是 很大的数进行加减乘除。1. 高精度加法1. 思路创建对应的数组变量及其他变量输入字符串将读入的数据转化为整数类型并逆序反转存储到数组中将两个数组做累加(注意进位)判断最高位是否为0大于0代表进位了则让长度加1倒序输出2. 代码123456789101112131415161718192021222324252627#includebits/stdc.husingnamespacestd;inta[510], b[510], c[510];//a:被加数 b:加数 c:和intmain(){// 1. 输入字符串string str1,str2;cin str1 str2;// 2. 1,2,3,4转换为{1,2,3,4},并且反转 {4,3,2,1}for(inti 0; i str1.size(); i )a[str1.size()-1 - i] str1[i] -0;for(inti 0; i str2.size(); i )b[str2.size()-1 - i] str2[i] -0;// 3. 找两个字符串最大的个数目的是为了将每一位计算完intans max(str1.size(), str2.size());// 4. 相加(ab)for(inti 0; i ans; i ){//遍历至最大长度避免有的数字没计算c[i] a[i] b[i];//相加c[i1] c[i] / 10;// 进位c[i] % 10;//将加的结果求余10 得出第i位}//4. 如果结果数组第ans位的数大于0(大于0代表进位了)则让长度增加1while(c[ans]0) ans;//5. 倒序输出for(inti ans-1; i 0; i--)cout c[i];return0;}123456789101112131415161718192021222324252627282930#includebits/stdc.husingnamespacestd;inta[500],b[500],c[501],ans[501],len_a,len_b,len_ans;//a:加数1 b:加数2 c:进位数组 ans:结果数组intmain(){// 1. 输入字符串string str1,str2;cin str1 str2;len_a str1.length();len_b str2.length();// 2. 1,2,3,4转换为{1,2,3,4},并且反转 {4,3,2,1}for(inti 0; i str1.size(); i )a[str1.size()-1 - i] str1[i] -0;for(inti 0; i str2.size(); i )b[str2.size()-1 - i] str2[i] -0;// 3. 找两个字符串最大的个数目的是为了将每一位计算完len_ans max(len_a,len_b);// 4. 相加(ab)for(inti0;ilen_ans;i){ans[i] a[i] b[i] c[i];//结果数组 等于 被加数 加上 加数 加上 进位的数if(ans[i] 9){//如果结果数组大于9则进位c[i1] ans[i] / 10;//给进位数组赋值ans[i] % 10;// 让结果数组大于9的数求余10变成个位数}}//5. 如果结果数组len_ans位的数大于0则让长度增加1while(ans[len_ans]0) len_ans;//6. 倒叙输出for(intilen_ans-1;i0;i--) coutans[i];return0;}2. 高精度减法1. 思路定义被减数a减数b结果c数组输入被减数和减数并且将数据倒叙存入数组中。找两个字符串最大的个数目的是为了将每一位计算完将两个数组做相减遍历至最大长度避免有的数字没计算 。去掉前导 0 。例如结果为089不需要0循环遍历输出2. 代码1234567891011121314151617181920212223242526272829#includebits/stdc.husingnamespacestd;inta[510], b[510], c[510];//a:被减数 b:减数 c:结果intmain(){// 1. 输入字符串string str1,str2;cin str1 str2;// 2. 1,2,3,4转换为{1,2,3,4},并且反转 {4,3,2,1}for(inti 0; i str1.size(); i )a[str1.size()-1 - i] str1[i] -0;for(inti 0; i str2.size(); i )b[str2.size()-1 - i] str2[i] -0;// 3. 找两个字符串最大的个数目的是为了将每一位计算完intans max(str1.size(), str2.size());// 4. 相减(a-b)for(inti 0; i ans; i ){//遍历至最大长度避免有的数字没计算if(a[i] b[i]){a[i1] - 1;//向前借一位a[i] 10;// 借一位以后加10}c[i] a[i] - b[i];}//5. 如去掉前导 0 。例如结果为089不需要0while(c[ans-1]0 ans1) ans--;//6. 倒序输出for(inti ans-1; i 0; i--)cout c[i];return0;}123456789101112131415161718192021222324252627282930#includebits/stdc.husingnamespacestd;inta[500],b[500],c[501],ans[501],len_a,len_b,len_ans;//a:被减数 b:减数 c:进位 ans:结果intmain(){// 1. 输入字符串string str1,str2;cin str1 str2;len_a str1.length();len_b str2.length();// 2. 1,2,3,4转换为{1,2,3,4},并且反转 {4,3,2,1}for(inti 0; i str1.size(); i )a[str1.size()-1 - i] str1[i] -0;for(inti 0; i str2.size(); i )b[str2.size()-1 - i] str2[i] -0;// 3. 找两个字符串最大的个数目的是为了将每一位计算完len_ans max(len_a,len_b);// 4. 相减(a-b)for(inti0;ilen_ans;i){ans[i] a[i] - b[i] - c[i];//结果数组 等于 被减数 减去 减数 减去 进位的数if(ans[i] 0){//如果结果数组小于0则借位ans[i] 10;// 借1位加上10c[i1];// 进位数组加1}}//5. 如去掉前导 0 。例如结果为089不需要0while(len_ans1 ans[len_ans-1]0) len_ans--;//6. 倒序输出for(intilen_ans-1;i0;i--) coutans[i];return0;}3. 如果出现被减数的位数小于减数时呢1234567891011121314151617181920212223242526272829303132333435363738#includebits/stdc.husingnamespacestd;inta[510], b[510], c[510];//a:被减数 b:减数 c:结果intflag 0;intmain(){// 1. 输入字符串string str1,str2;cin str1 str2;//2. str1.size() str2.size() 或者 两个数一样长并且被减数的数值小于减数时才需要交换两数位置if(str1.size() str2.size() || str1.size() str2.size() str1 str2) {string t str1;str1 str2;str2 t;flag 1;}// 3. 1,2,3,4转换为{1,2,3,4},并且反转 {4,3,2,1}for(inti 0; i str1.size(); i )a[str1.size()-1 - i] str1[i] -0;for(inti 0; i str2.size(); i )b[str2.size()-1 - i] str2[i] -0;// 4. 找两个字符串最大的个数目的是为了将每一位计算完intans max(str1.size(), str2.size());// 5. 相减(a-b)for(inti 0; i ans; i ){//遍历至最大长度避免有的数字没计算if(a[i] b[i]){a[i1] - 1;//向前借一位a[i] 10;// 借一位以后加10}c[i] a[i] - b[i];}//6.如去掉前导 0 。例如结果为089不需要0while(c[ans-1]0 ans1) ans--;//7. 倒叙输出if(flag 1) cout-;for(inti ans-1; i 0; i--)cout c[i];return0;}到此这篇关于C高精度算法的使用场景详解的文章就介绍到这了

相关文章:

C++高精度算法的使用场景详解

描述如果要计算的数超过了long long怎么解决? —>使用高精度加减乘除,简单理解就是 很大的数进行加减乘除。1. 高精度加法1. 思路创建对应的数组变量及其他变量输入字符串将读入的数据转化为整数类型,并逆序(反转)存储到数组中…...

别再只写Hello World了!用CH32V307和W25Qxx做个离线数据记录仪

从零构建CH32V307环境数据记录仪:SPI Flash实战指南 每次看到"Hello World"在串口终端闪烁时,你是否想过让单片机做些更有意义的事?环境监测、工业控制、智能家居等领域都离不开数据记录功能,而SPI Flash芯片正是实现离…...

题解:AtCoder AT_awc0006_e Store Sales Management

本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。 欢迎大…...

实测对比:用Faster-Whisper-Large-v3模型转写1小时音频,CPU和GPU速度差多少?

Faster-Whisper-Large-v3 硬件性能实测:CPU与GPU转写效率全解析 语音识别技术正在从实验室走向日常应用,而开源的Faster-Whisper系列模型因其平衡的准确率和效率受到开发者青睐。但一个现实问题摆在面前:在没有专业计算卡的个人设备上&#x…...

逆天!月薪3万程序员相亲被月入6千相亲对象嫌弃加班,婚恋市场太魔怔了……

大家好,这里是轮子工厂。最近有个关注我很久的读者后台留言说:马上30了,现在工作收入什么的比较稳定,平时圈子太窄,想真心找个对象,就在软件上相了几个人。读者在南京做后端开发,入行五年&#…...

前端新范式:用 AI 提效开发,用 EE 保证迭代质量

1.概述 在人工智能快速发展的今天,AI不再仅仅是回答问题的聊天机器人,而是正在演变为能够主动完成复杂任务的智能代理。OpenAI的Codex CLI就是这一趋势的典型代表——一个跨平台的本地软件代理,能够在用户的机器上安全高效地生成高质量的软件…...

你的芯片真的‘画’对了吗?用Calibre/Pegasus做LVS验证,必须绕开的5个新手坑

你的芯片真的‘画’对了吗?用Calibre/Pegasus做LVS验证,必须绕开的5个新手坑 在芯片设计的最后冲刺阶段,LVS(Layout Versus Schematic)验证就像一场没有补考机会的毕业答辩。许多工程师在完成布局布线后,常…...

HaoMD:基于Tauri 2与AI的下一代高性能Markdown编辑器深度解析

1. 项目概述:为什么我们需要另一个Markdown编辑器? 如果你和我一样,是个常年与文字、代码和文档打交道的人,那么你的电脑里大概率已经躺了好几个Markdown编辑器:可能是轻量级的Typora,功能强大的VS Code&a…...

告别万年历芯片!用STM32的RTC和备份寄存器做个带事件记录的简易数据日志器

基于STM32 RTC与备份寄存器的轻量级数据日志器设计实战 在物联网边缘设备开发中,数据记录功能往往面临三大挑战:实时时间戳精度、掉电数据保存和有限硬件资源之间的矛盾。传统方案依赖外部RTC芯片加Flash存储的组合,不仅增加BOM成本&#xff…...

从零实战K8s:基于Minikube的容器化应用部署与Helm管理指南

1. 从零到一:为什么我们需要一个实战导向的K8s教程如果你在搜索引擎里敲下“Kubernetes 教程”,大概率会得到两种结果:一种是官方文档那种严谨但略显枯燥的“百科全书”,另一种是各种博客里零散的“最佳实践”片段。前者体系完整但…...

开发者作品集灵感宝库:从开源项目到个人网站构建全攻略

1. 项目概述:一份为开发者与设计师量身定制的灵感宝库 如果你是一名开发者或设计师,正对着空白的编辑器,为如何打造一个既能展示技能、又能彰显个性的个人作品集网站而发愁,那么你很可能需要一份高质量的灵感来源。这正是“Portf…...

开源实时语音助手CortiLoop:本地化部署与模块化定制指南

1. 项目概述:一个开源的实时语音助手循环 最近在GitHub上看到一个挺有意思的项目,叫“CortiLoop”。光看名字,你可能会联想到微软的Cortana,但别误会,这可不是微软的官方产品。这是一个由开发者“shenchengtsi”开源的…...

构建个人开发工具集:从环境配置到工作流自动化实战

1. 项目概述:一个面向开发者的轻量级开源工具最近在整理自己的开发环境时,发现一个挺有意思的小工具,叫gandli/obsd。乍一看这个标题,可能会有点摸不着头脑,它不像那些大名鼎鼎的框架或库,名字直白易懂。但…...

吉时利Keilthley 2400 通用数字源表 高精度数字万用表

吉时利Keilthley 2400 通用数字源表 高精度数字万用表 Keithley 标准系列 2400 源测量单元 (SMU) 仪器提供四象限精密电压和电流源/负载,外加测量。每个 SMU 仪器均同时提供高度稳定的直流电源和一台真正的仪器级 6 位万用表。电源特性包括低噪声、高精度和回读。万…...

深度学习在时间序列预测中的应用与优化

1. 时间序列预测的深度学习革命十年前我刚入行时,做时间序列预测还停留在ARIMA、指数平滑这些传统统计方法上。直到2016年第一次用LSTM预测电商销量,准确率比SARIMA提升了23%,才真正体会到深度学习的威力。如今Transformer架构在时间序列领域…...

2025届毕业生推荐的六大降重复率工具实际效果

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 现在知网已经上线了AIGC检测服务,这服务能能精准识别像GPT等工具生成的文本。对…...

IoT设备可靠性实战:从MTBF理论到云端监控告警(基于Node-RED与ThingsBoard)

IoT设备可靠性实战:从MTBF理论到云端监控告警(基于Node-RED与ThingsBoard) 工业物联网设备的可靠性直接影响生产效率和运维成本。想象一下,当一台关键设备在凌晨3点突然停机,而值班人员直到早班交接时才发现问题——这…...

SAP ABAP进阶:如何像搭积木一样复用‘ZFM_ALG_STAT02’组件,打造你的专属JOB分析报表?

SAP ABAP模块化实战:用统计组件构建智能JOB分析报表的五个关键步骤 在SAP系统管理中,作业(JOB)监控一直是运维工作的核心痛点之一。每天面对数以千计的后台作业,开发人员常常陷入两个极端:要么在SM37标准报…...

3分钟快速掌握:免费高效的ncmdump网易云音乐NCM格式解密终极指南

3分钟快速掌握:免费高效的ncmdump网易云音乐NCM格式解密终极指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 您是否曾为网易云音乐下载的NCM格式文件无法在其他播放器使用而烦恼?ncmdump这款开源工具提供…...

ggplot2 3.5+purrr 1.0+readr 2.1链式调优,让Shiny报告响应<300ms(附benchmark对比表)

更多请点击: https://intelliparadigm.com 第一章:R语言Tidyverse 2.0自动化数据报告性能调优导论 Tidyverse 2.0 引入了底层引擎重构(如 vctrs 0.6 和 pillar 1.5),显著提升了 dplyr、purrr 和 readr 在大规模数据流…...

Code The Hidden Language of Computer Hardware and Software 学习:从零理解寄存器和总线

一、先从最简单的问题开始:信息放在哪里? 你用计算器按下 3 5,计算器需要先把 3 记住,才能再加上 5。 CPU 也一样——它在做任何计算之前,必须先把数字存在某个地方。 存数字的地方有两类: 慢但多 …...

【硬核干货】PHP+ReactPHP+Swoole三引擎协同方案:单机支撑20万+设备接入,已通过ISO 14229-1认证测试

更多请点击: https://intelliparadigm.com 第一章:工业 PHP 物联网数据采集网关架构概览 工业级 PHP 物联网数据采集网关并非传统 Web 应用的简单延伸,而是融合实时性、协议兼容性与边缘计算能力的混合架构。其核心目标是在资源受限的嵌入式…...

Vibe Stack:用架构规则约束AI编程,解决Next.js与Supabase开发中的安全与兼容性问题

1. 项目概述:用架构规则为AI编程上“紧箍咒” 如果你和我一样,已经深度依赖像 Cursor、GitHub Copilot 或 Claude 这样的 AI 编程助手来加速开发,那你一定也经历过那种“冰火两重天”的体验。一方面,生产力确实得到了前所未有的提…...

Shell-Now:构建可移植、模块化的即时Shell环境

1. 项目概述与核心价值最近在整理自己的开发环境,发现一个挺有意思的现象:无论是刚入行的新人,还是像我这样干了十几年的老手,在配置命令行环境时,总免不了要经历一番折腾。从安装各种工具链、配置环境变量&#xff0c…...

Appium Inspector搭配Android真机/模拟器,从环境配置到第一个自动化脚本的完整踩坑记录

Appium Inspector实战指南:从零搭建Android自动化测试环境 1. 环境准备:避开那些新手必踩的坑 第一次接触Appium Inspector时,我花了整整三天时间才让第一个测试脚本跑起来。无数个报错窗口、连接失败提示和莫名其妙的参数错误让我差点放弃…...

PS-VAE:融合像素与语义的计算机视觉生成模型

1. 项目概述:当计算机学会"理解"图像 在计算机视觉领域,我们一直面临一个根本性挑战:如何让机器不仅看到像素,更能理解图像背后的语义信息?传统方法往往将这两个任务割裂处理——先用卷积网络提取特征&#…...

保姆级避坑指南:在Ubuntu 22.04上用CMake+MPICH搞定LAMMPS(附依赖包配置)

科研计算实战:Ubuntu 22.04下LAMMPS的CMakeMPICH高效部署方案 在分子动力学模拟领域,LAMMPS作为开源利器被广泛应用,但新手在Linux环境部署时往往被依赖冲突、编译报错等问题困扰。本文将分享一套经过验证的安装方案,特别针对国内…...

基于MCP协议的AI代码审查工具argus-mcp:本地化部署与CI/CD集成实战

1. 项目概述:当AI成为你的代码审查搭档 如果你和我一样,每天都要面对成百上千行代码,那么“代码审查”这个词,可能既让你感到安心,又让你有点头疼。安心的是,它是保证代码质量、发现潜在Bug的最后一道防线…...

3分钟免费部署:B站视频解析API终极指南

3分钟免费部署:B站视频解析API终极指南 【免费下载链接】bilibili-parse bilibili Video API 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse bilibili-parse是一个简单高效的PHP API工具,专门用于解析B站视频资源。无论你是开发者…...

3个关键问题解析:青龙面板升级失败深度排查与修复指南

3个关键问题解析:青龙面板升级失败深度排查与修复指南 【免费下载链接】qinglong 支持 Python3、JavaScript、Shell、Typescript 的定时任务管理平台(Timed task management platform supporting Python3, JavaScript, Shell, Typescript) …...