C++高精度|竞赛(加减乘除模板)
高精度篇文章目录高精度篇1.1高精度核心原理1.2高精度加法1.3高精度减法1.4高精度乘法1.4.1高精度*低精度1.4.2高精度*高精度1.5高精度除法1.5.1低精度/低精度1.5.2高精度/低精度2.高精度快速幂1.1高精度核心原理适用场景数字超过 long long 范围超过1e18。高精度算法High Accuracy Algorithm是处理大数字的数学计算 方法。在一般的科学计算中会经常算到小数点后几百位或者更多存储规则统一规则全部运算通用用字符串读入大数转 vector 存每一位reverse 倒置低位存在下标 0运算结束删除前导0输出倒序输出1.2高精度加法P1601 高精度加法 - 洛谷从低位逐位相加记录进位最后处理剩余进位。#includebits/stdc.h #define ll long long #define endl \n #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); #define ull unsigned long long #define fi first #define se second #define PLL pairll, ll #define YES coutYESendl; #define NO coutNOendl; using namespace std; vectorlla; vectorllb; string a1,b1; ll la,lb,lc; int main() { IOS cina1b1; laa1.size(); lbb1.size(); lcmax(la,lb)1; for(ll i0;ila;i) { a.push_back(a1[i]-0); } for(ll i0;ilb;i) { b.push_back(b1[i]-0); } reverse(a.begin(),a.end()); reverse(b.begin(),b.end()); vectorllc(lc,0); for(ll i0;ilc;i) { c[i](a[i]b[i]); c[i1]c[i]/10; c[i]c[i]%10; } while(c.size()1c.back()0) { c.pop_back(); } for(ll ic.size()-1;i0;i--) { coutc[i]; } coutendl; // coutfixedsetprecision(x) ; return 0; }1.3高精度减法P2142 高精度减法 - 洛谷必须先比较大小大减小如果小数−大数交换两数最后输出负号逐位相减不够减向前借位删除前导0#includebits/stdc.h #define ll long long #define endl \n #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); #define ull unsigned long long #define fi first #define se second #define PLL pairll, ll #define YES coutYESendl; #define NO coutNOendl; using namespace std; vectorlla; vectorllb; string a1,b1; ll la,lb,lc; bool cmp(string a1,string b1)\ { if(a1.size()!b1.size()) { return a1.size()b1.size(); } for(ll i0;ia1.size();i) { if(a1[i]!b1[i]) { return a1[i]b1[i]; } } return true; } int main() { IOS cina1b1; bool flagtrue; if(!cmp(a1,b1)) { swap(a1,b1); flagfalse; } laa1.size(); lbb1.size(); lcmax(la,lb); a.clear(); b.clear(); for(ll i0;ila;i) { a.push_back(a1[i]-0); } for(ll i0;ilb;i) { b.push_back(b1[i]-0); } reverse(a.begin(),a.end()); reverse(b.begin(),b.end()); vectorllc(lc,0); ll t0; for(ll i0;ilc;i) { c[i]a[i]-t; if(ilb) { c[i]-b[i]; } if(c[i]0) { c[i]10; t1; } else { t0; } } while(c.size()1c.back()0) { c.pop_back(); } if(!flag) { cout-; } for(ll ic.size()-1;i0;i--) { coutc[i]; } coutendl; // coutfixedsetprecision(x) ; return 0; }1.4高精度乘法1.4.1高精度*低精度大数每一位 × 普通整数统一进位。#includebits/stdc.h #define ll long long #define endl \n #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); using namespace std; int main() { IOS string a1; ll x; cina1x; vectorlla; ll laa1.size(); for(ll i0;ila;i) { a.push_back(a1[i]-0); } reverse(a.begin(),a.end()); vectorllc; ll t0; for(ll i0;ila||t;i) { if(ila) ta[i]*x; c.push_back(t%10); t/10; } while(c.size()1c.back()0) { c.pop_back(); } for(ll ic.size()-1;i0;i) { coutc[i]; } coutendl; return 0; }1.4.2高精度*高精度L-A × B_河南萌新联赛2026第四场南阳理工学院c[ij] a[i] * b[j]结果数组长度 len(a) len(b)最后统一进位、去前导0#includebits/stdc.h #define ll long long #define endl \n #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); #define ull unsigned long long #define fi first #define se second #define PLL pairll, ll #define YES coutYESendl; #define NO coutNOendl; using namespace std; vectorlla; vectorllb; string a1,b1; ll l1,l2; int main() { IOS cina1b1; l1a1.size(); l2b1.size(); for(char c:a1) { a.push_back(c-0); } for(char c:b1) { b.push_back(c-0); } reverse(a.begin(),a.end()); reverse(b.begin(),b.end()); vectorllc(l1l2,0); for(ll i0;il1;i) { for(ll j0;jl2;j) { c[ij]a[i]*b[j]; } } ll t0; for(ll i0;ic.size();i) { tc[i]; c[i]t%10; t/10; } if(c.size()1c.back()0) { c.pop_back(); } for(ll ic.size()-1;i0;i--) { coutc[i]; } // coutfixedsetprecision(x) ; return 0; }1.5高精度除法P1480 A/B Problem高精度除法Ⅰ - 洛谷加减乘从低位下标0算除法必须从高位往低位算1.5.1低精度/低精度保留n位小数#includebits/stdc.h #define ll long long #define endl \n #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); #define ull unsigned long long #define fi first #define se second #define PLL pairll, ll #define YES coutYESendl; #define NO coutNOendl; using namespace std; int main() { IOS ll a0; ll b0; ll n0;//保留小数个数 cinabn; couta/b.; ll ta%b; for(ll i0;in;i) { tt*10; coutt/b; tt%b; } // coutfixedsetprecision(x) ; return 0; }1.5.2高精度/低精度#includebits/stdc.h #define ll long long #define endl \n #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); #define ull unsigned long long #define fi first #define se second #define PLL pairll, ll #define YES coutYESendl; #define NO coutNOendl; using namespace std; string s; ll b0; vectorlla; int main() { IOS cinsb; ll las.size(); vectorllc(la,0); for(ll i0;ila;i) { a.push_back(s[i]-0); } ll t0; for(ll i0;ila;i) { tt*10a[i]; if(tb) { c[i]t/b; tt%b; } else { c[i]0; } } ll id0; for(ll i0;ila;i) { if(c[i]!0) { idi; break; } } for(ll iid;ila;i) { coutc[i]; } cout......t; // coutfixedsetprecision(x) ; return 0; }高精度/高精度不常考2.高精度快速幂P1045 [NOIP 2003 普及组] 麦森数[P1045 NOIP 2003 普及组] 麦森数 - 洛谷题目给定 P求(2P-1)输出它的十进制位数输出最后 500 位每行 50 位一共 10 行高位补 0// #includebits/stdc.h #define ll long long #define endl \n #define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); #define ull unsigned long long #define fi first #define se second const ll N500; const ll base10000; using namespace std; ll a[N]{0}; ll b[N]{0}; ll tmp[N]; void gjd2(ll a1[],ll b[]) { memset(tmp,0,sizeof(tmp)); for(ll i0;iN;i) { if(a1[i]0) { continue; } for(ll j0;ijN;j) { tmp[ij]a1[i]*b[j]; } } for(ll i0;iN-1;i) { tmp[i1]tmp[i]/10; tmp[i]%10; } tmp[N-1]%10; memcpy(a1,tmp,sizeof(tmp)); } void ksm(ll p) { memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); a[0]1; b[0]2; while(p) { if(p1) { gjd2(a,b); } p1; if(p) { gjd2(b,b); } } a[0]--; } int main() { IOS ll p; cinp; cout(int)(p*(log10(2)))1endl; ksm(p); ll cnt0; for(ll j499;j0;j--) { couta[j]; if(j%500) { coutendl; } } coutendl; return 0; }

相关新闻

Java Arrays.sort() 排序全解析:从升序降序到自定义对象排序

Java Arrays.sort() 排序全解析:从升序降序到自定义对象排序

1. 项目概述:不只是排序,更是理解Java集合的基石 如果你写过Java,那 Arrays.sort() 这个方法你肯定不陌生。表面上看,它就是个给数组排序的工具,升序降序似乎一目了然。但在我十多年的开发生涯里,见过太多…

2026/10/12 3:22:35 阅读更多 →
动态规划与数学建模在《幻兽帕鲁》育种优化中的应用

动态规划与数学建模在《幻兽帕鲁》育种优化中的应用

1. 项目概述:从游戏到数学的跨界思考最近在玩《幻兽帕鲁》的朋友,估计不少人都沉迷在“孵蛋”这个深坑里。看着两只帕鲁放进牧场,满怀期待地等待一个未知的后代,这个过程本身就充满了随机性的魅力。但玩久了你会发现,这…

2026/10/2 11:10:16 阅读更多 →
LabelPaw 2.0.0:本地化AI辅助标注工作台,集成YOLO与SAM模型提升效率

LabelPaw 2.0.0:本地化AI辅助标注工作台,集成YOLO与SAM模型提升效率

上周在整理一个旧项目的图像数据集时,我又一次被“标注”这件事给困住了。手头有几千张图片,需要把里面的目标物体一个个框出来,再打上标签。这活儿听起来简单,重复做起来却极其消耗耐心和精力:眼睛盯着屏幕&#xff0…

2026/10/2 3:55:15 阅读更多 →

最新新闻

VaR五种算法R实现:从历史模拟到Copula-GARCH全解析

VaR五种算法R实现:从历史模拟到Copula-GARCH全解析

简介:金融风险管理中,风险价值(VaR)是衡量投资组合潜在损失的核心指标。这份资料聚焦五种计算VaR的算法,重点利用DCC-GARCH模型与Copula-GARCH模型进行波动率与相依性建模,面向金融工程、量化风控方向的学生…

2026/10/12 22:30:07 阅读更多 →
Linux 上自建 Nacos 集群:从环境准备到高可用验证的完整指南

Linux 上自建 Nacos 集群:从环境准备到高可用验证的完整指南

1. 为什么要在 Linux 上自建 Nacos 集群1.1 从单机到集群:一个绕不开的坎很多团队一开始用 Nacos 都是单机模式,图省事,下载解压启动就完事。开发环境跑得好好的,一到预发或者生产环境,问题就来了:服务注册…

2026/10/12 22:30:07 阅读更多 →
Docker 安装 Jenkins 实战:从环境部署到自动化构建与部署全流程

Docker 安装 Jenkins 实战:从环境部署到自动化构建与部署全流程

最近这段时间一直在折腾持续集成这套东西,起因也很简单:某次发布新版本的时候,我手动打包、传服务器、重启服务,一步接一步,结果到了最后才发现漏了一个配置文件,整个流程又得从头来一遍。那天晚上我就在想…

2026/10/12 22:30:07 阅读更多 →
35kV三段式电流继电保护课程设计:整定计算与仿真全流程

35kV三段式电流继电保护课程设计:整定计算与仿真全流程

“35kV电力系统三段式电流继电保护课程设计仿真报告”,这句话我琢磨了好一阵子。电气专业的学生对这个题目应该都不陌生,它几乎是继电保护课程里绕不开的经典任务。很多人拿到这个题目之后的第一反应不是“我会不会算”,而是“我算这些东西到…

2026/10/12 22:30:07 阅读更多 →
豆瓣评论情感分析与词云实战:SnowNLP 中文 NLP 流水线

豆瓣评论情感分析与词云实战:SnowNLP 中文 NLP 流水线

简介:这份资源面向Python数据挖掘初学者与自然语言处理入门者,围绕豆瓣《肖申克的救赎》评论文本,演示如何调用SnowNLP库完成情感分析,并配合词云与分词处理,帮助读者建立从文本读取、中文分词到情感倾向判定的完整思路…

2026/10/12 22:30:07 阅读更多 →
flannel-v0.11.0 ARM64二进制包:Kubernetes边缘节点CNI确定性部署方案

flannel-v0.11.0 ARM64二进制包:Kubernetes边缘节点CNI确定性部署方案

简介:本资源为 Kubernetes 容器网络插件 Flannel 的 v0.11.0 版本官方二进制发行包,专为 ARM64 架构 Linux 系统编译,适用于在树莓派、国产 ARM 服务器或边缘计算节点上部署 K8s 集群的运维工程师与云原生开发者。压缩包共含 3 个核心文件&am…

2026/10/12 22:29:07 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →