初识算法——高精度
练习1P1601 高精度加法题目背景本题是高精度加法的模板题。题目描述给定两个非负整数a,ba,ba,b求它们的和。不用考虑负数。输入格式输入共两行每行一个非负整数分别为a,ba,ba,b。输出格式输出一行一个非负整数表示ababab的值。输入输出样例 #1输入 #11 1输出 #12输入输出样例 #2输入 #21001 9099输出 #210100说明/提示对于20%20\%20%的测试数据a,b≤109a,b \le 10^9a,b≤109对于40%40\%40%的测试数据a,b≤1018a,b \le 10^{18}a,b≤1018对于100%100\%100%的测试数据0≤a,b≤105000\le a,b \le 10^{500}0≤a,b≤10500。解题思路①先以字符串形式读取大数再利用ASCⅡ码进行转换 拆分大数存储到整数数组中逆着拆 方便进位②将每一位都加起来10 就进位 本位%10③如果发生进位 数组的长度记得1参考代码#includeiostream#includestring#includealgorithmusingnamespacestd;intmain(){string a,b;intA[520]{0},B[520]{0},C[520]{0};cinab;intlenaa.length();intlenbb.length();for(intilena-1,j0;i0;i--,j){A[j]a[i]-0;}for(intilenb-1,j0;i0;i--,j){B[j]b[i]-0;}intlenmax(lena,lenb);for(inti0;ilen;i){C[i]A[i]B[i];//要用 不能直接赋值会导致进位来的数据被覆盖C[i1]C[i]/10;C[i]%10;}if(C[len])//我的基底是从0开始的 如果没有进位最高位就在len-1 现在可能有进位 那最高位就在lenlen;for(intilen-1;i0;i--)coutC[i];return0;}练习2P1303 A*B Problem题目背景高精度乘法模板题。题目描述给出两个非负整数求它们的乘积。输入格式输入共两行每行一个非负整数。输出格式输出一个非负整数表示乘积。输入输出样例 #1输入 #11 2输出 #12说明/提示每个非负整数不超过10200010^{2000}102000。解题思路基本和高精加同理参考代码#includeiostream#includestring#includealgorithmusingnamespacestd;intmain(){inta[5010]{0},b[5010]{0},c[5010]{0};string A,B;cinAB;intlenaA.length();intlenbB.length();for(intilena-1,j1;i0;i--,j){a[j]A[i]-0;}for(intilenb-1,j1;i0;i--,j){b[j]B[i]-0;}for(inti1;ilena;i){for(intj1;jlenb;j){c[ij-1]a[i]*b[j];}}//处理进位intlenlenalenb;for(inti1;ilen;i){c[i1]c[i]/10;c[i]%10;}//处理前导零最高位可能是0例如两位数乘两位数得到的可能是三位数最多不会超过两个因子的位数之和 但是上面的len给了4 所以第4位是0 要把它处理掉while(!c[len])len--;for(intimax(1,len);i1;i--)//如果乘积为0 len会一直减到0 没输出了{coutc[i];}return0;}练习3P1009 [NOIP 1998 普及组] 阶乘之和题目描述用高精度计算出S1!2!3!⋯n!S 1! 2! 3! \cdots n!S1!2!3!⋯n!n≤50n \le 50n≤50。其中!表示阶乘定义为n!n×(n−1)×(n−2)×⋯×1n!n\times (n-1)\times (n-2)\times \cdots \times 1n!n×(n−1)×(n−2)×⋯×1。例如5!5×4×3×2×11205! 5 \times 4 \times 3 \times 2 \times 11205!5×4×3×2×1120。输入格式一个正整数nnn。输出格式一个正整数SSS表示计算结果。输入输出样例 #1输入 #13输出 #19说明/提示【数据范围】对于100%100 \%100%的数据1≤n≤501 \le n \le 501≤n≤50。【其他说明】注《深入浅出基础篇》中使用本题作为例题但是其数据范围只有n≤20n \le 20n≤20使用书中的代码无法通过本题。如果希望通过本题请继续学习第八章高精度的知识。NOIP1998 普及组 第二题参考代码#includeiostream#includealgorithmusingnamespacestd;voidmul(intf[],intf_len,intx)// x是n f和f_len是(n-1)的{inttmp[66]{0};//计算n!for(inti1;if_len;i){tmp[i]f[i]*x;}intlenf_len;//处理进位for(inti1;ilen;i){tmp[i1]tmp[i]/10;tmp[i]%10;}//处理长度变化 同时还要处理最高位可能还没有进位的情况 乘法有可能10while(tmp[len1]!0){len;tmp[len1]tmp[len]/10;tmp[len]%10;}//更新阶乘的结果for(inti1;ilen;i){f[i]tmp[i];}f_lenlen;//因为传的是f_len的地址所以直接赋值会对原值进行修改}voidadd(intsum[],intsum_len,intf[],intf_len){intlenmax(f_len,sum_len);inttmp[66]{0};//更新和的大小 前n-1个阶乘的和 再加上 n!for(inti1;ilen;i){tmp[i]sum[i]f[i];}//处理和的进位for(inti1;ilen;i){tmp[i1]tmp[i]/10;tmp[i]%10;}//处理和的长度变化 注意高精加的最高位while(tmp[len1]!0){len;}for(inti1;ilen;i){sum[i]tmp[i];}sum_lenlen;}intmain(){intn0;cinn;intf[66]{0};//当前(n-1)!的大小intf_len1;//当前(n-1)的长度intsum[66]{0};//当前所有阶乘的和 (1! 2! ... (n-1)!)intsum_len1;//当前所有阶乘的和的长度f[1]1;//初始化第一个的值sum[1]0;//和初始化为0//总体思路是先阶乘再加for(inti1;in;i){mul(f,f_len,i);add(sum,sum_len,f,f_len);}for(intisum_len;i1;i--){coutsum[i];}return0;}

相关新闻

STM32按键中断实战:用HAL库实现LED控制(附CubeMX配置截图)

STM32按键中断实战:用HAL库实现LED控制(附CubeMX配置截图)

STM32按键中断实战:用HAL库实现LED控制(附CubeMX配置截图) 很多刚开始接触STM32的朋友,第一次听说“中断”这个概念时,可能会觉得它既神秘又复杂。其实,它就像你正在专心写代码时,手机突然来了个…

2026/7/5 15:58:34 阅读更多 →
突破多引擎壁垒:XXMI-Launcher重构游戏模组管理技术生态

突破多引擎壁垒:XXMI-Launcher重构游戏模组管理技术生态

突破多引擎壁垒:XXMI-Launcher重构游戏模组管理技术生态 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher 游戏模组工具长期面临三大核心痛点:不同引擎API碎…

2026/7/5 4:13:10 阅读更多 →
NHSE创意加速引擎:3倍效率提升的动森存档编辑终极指南

NHSE创意加速引擎:3倍效率提升的动森存档编辑终极指南

NHSE创意加速引擎:3倍效率提升的动森存档编辑终极指南 【免费下载链接】NHSE Animal Crossing: New Horizons save editor 项目地址: https://gitcode.com/gh_mirrors/nh/NHSE 一、价值定位:重新定义动森创作边界 在《集合啦!动物森友…

2026/7/4 19:49:11 阅读更多 →

最新新闻

Gemma-4 E4B技术深度解析:如何用4.5B有效参数实现多模态智能

Gemma-4 E4B技术深度解析:如何用4.5B有效参数实现多模态智能

Gemma-4 E4B技术深度解析:如何用4.5B有效参数实现多模态智能 【免费下载链接】gemma-4-E4B 项目地址: https://ai.gitcode.com/hf_mirrors/google/gemma-4-E4B 当你面对一个需要同时处理文本、图像、音频和视频的AI项目时,是否曾为选择合适模型而…

2026/7/5 15:56:41 阅读更多 →
Vue3企业级数据可视化大屏架构设计:应对多分辨率适配与实时渲染挑战

Vue3企业级数据可视化大屏架构设计:应对多分辨率适配与实时渲染挑战

Vue3企业级数据可视化大屏架构设计:应对多分辨率适配与实时渲染挑战 【免费下载链接】IofTV-Screen-Vue3 一个基于 vue3、vite、Echart 框架的大数据可视化(大屏展示)模板 项目地址: https://gitcode.com/gh_mirrors/io/IofTV-Screen-Vue3 …

2026/7/5 15:56:41 阅读更多 →
Gin-Vue-Admin代码生成器字段编辑:5个深度优化技巧与架构解析

Gin-Vue-Admin代码生成器字段编辑:5个深度优化技巧与架构解析

Gin-Vue-Admin代码生成器字段编辑:5个深度优化技巧与架构解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin的开发基础平台,支持TS和JS混用。它集成了JWT鉴权、权限管理、动态路由、显隐可控组件、分页封装、多点登录拦截、资源权限、上传下…

2026/7/5 15:54:41 阅读更多 →
3分钟掌握 facetype.js:终极字体转换工具完全指南

3分钟掌握 facetype.js:终极字体转换工具完全指南

3分钟掌握 facetype.js:终极字体转换工具完全指南 【免费下载链接】facetype.js typeface.js generator 项目地址: https://gitcode.com/gh_mirrors/fa/facetype.js facetype.js 是一个强大的在线字体转换工具,专门用于将标准字体文件转换为 type…

2026/7/5 15:54:41 阅读更多 →
DINOv3:重新定义视觉基础模型的无监督学习范式

DINOv3:重新定义视觉基础模型的无监督学习范式

DINOv3:重新定义视觉基础模型的无监督学习范式 【免费下载链接】dinov3 Reference PyTorch implementation and models for DINOv3 项目地址: https://gitcode.com/GitHub_Trending/di/dinov3 在计算机视觉领域,大规模预训练模型正经历着从监督学…

2026/7/5 15:54:41 阅读更多 →
Perlite研究应用:学术笔记管理与分享系统的终极指南

Perlite研究应用:学术笔记管理与分享系统的终极指南

Perlite研究应用:学术笔记管理与分享系统的终极指南 【免费下载链接】Perlite A web-based markdown viewer optimized for Obsidian 项目地址: https://gitcode.com/GitHub_Trending/pe/Perlite Perlite是一个基于Web的Markdown查看器,专为Obsid…

2026/7/5 15:50:40 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻