尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
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; }
RELATED

相关推荐

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

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

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

📅 2026/9/10 6:50:08
Windows系统文件sxproxy.dll丢失找不到问题解决

Windows系统文件sxproxy.dll丢失找不到问题解决

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

📅 2026/9/17 20:05:22
Windows系统文件swprv.dll丢失找不到问题解决

Windows系统文件swprv.dll丢失找不到问题解决

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

📅 2026/9/7 17:08:28
MORE NEWS

更多资讯

📰

openHiTLS 社区贡献指南:CLA 签署、Issue 讨论与本地构建验证实战

密码学网络安全 【免费下载链接】openHiTLS 旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践&#xff…

📰

视频播放异常排查:非APP层导致的黑屏卡顿根因定位

干播放器开发的,多少都经历过这种夜晚:线上反馈视频黑屏、卡顿、一直转圈,第一反应把APP代码翻了个底朝天,日志加了十几处,甚至回滚了两个版本,问题还在。后来才发现,出问题的环节根本不在APP层…

📰

玲珑轮胎登上山东台:一条轮胎凭什么跑出“山东好品”的底气

近日,玲珑轮胎登上山东电视台新闻频道《市场监管在线》栏目“好品山东‘链’成记—企业说好品”,以“质量是企业的生命线”为主题,玲珑轮胎常务副总裁孙松涛介绍了玲珑通过提高制造标准、加大研发能力、提升产品性能、严格把控质量、紧抓细节…

📰

PRAXIST 直接 CLI 运维指南:从校验、启动到观察、停止与恢复的完整生命周期

人工智能AI Agent多智能体Agent 工作流深度研究AI 评测 【免费下载链接】PRAXIST Autonomous research system for measurable, computer-executable research. 项目地址: https://gitcode.com/gh_mirrors/pr/PRAXIST 点击查看 免费下载 本文是面向运维人员&#x…

📰

ATF转换PNG/JPG工具实战:从识别文件头到DXT1解压的完整指南

简介:这是一款专门将Adobe纹理格式(ATF)转换为PNG或JPG格式的实用工具,面向Stage3D开发者、Flash/Air游戏美工及需要跨平台处理ATF纹理的图形工作者。资源包合计30个文件,压缩后约13.58MB,内含exe主程序、d…

📰

GuardianShell主动式AI野生动物哨兵:边缘计算架构与部署实战

1. 从零拆解 GuardianShell:一个主动式 AI 野生动物哨兵到底在解决什么问题第一次看到 GuardianShell 这个标题,我脑子里蹦出来的不是“又一个 AI 摄像头”,而是一个很具体的画面:凌晨两点,某片山区农场的边缘&#xf…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬