【模板】高精度 [高精度]
相当于把各种运算人工模拟一遍,还是很好理解的
参照的是这个dalao的模板 (感觉全机房的都用的这个模板)理解了就差不多了
一些我犯过的错误还有注意的地方
- 小于的比较要从高位到低位比较
1 #define rg register 2 const int power=4,base=10000,N=10005;//万位 3 char a[N],b[N]; 4 5 struct num{ 6 int a[N]; 7 num(){memset(a,0,sizeof(a));} 8 num(char *s) 9 { 10 memset(a,0,sizeof(a)); 11 int len=strlen(s); 12 a[0]=(len+power-1)/power; 13 for(rg int i=0,t=0,w;i<len;++i,w*=10) 14 { 15 if(i%power==0) w=1,++t; 16 a[t]+=w*(s[i]-'0'); 17 } 18 } 19 void print() 20 { 21 printf("%d",a[a[0]]); 22 for(rg int i=a[0]-1;i>0;--i) printf("%04d",a[i]); 23 } 24 }p,q,ans; 25 26 num operator +(const num &p,const num &q) 27 { 28 num c; 29 c.a[0]=max(p.a[0],q.a[0]); 30 for(rg int i=1;i<=c.a[0];++i) 31 { 32 c.a[i]+=p.a[i]+q.a[i]; 33 c.a[i+1]+=c.a[i]/base,c.a[i]%=base; 34 } 35 if(c.a[c.a[0]+1]) ++c.a[0]; 36 return c; 37 } 38 39 bool operator < (const num &p,const num &q) 40 { 41 if(p.a[0]<q.a[0]) return true; 42 if(p.a[0]>q.a[0]) return false; 43 for(rg int i=p.a[0];i>0;--i) 44 if(p.a[i]!=q.a[i]) return p.a[i]<q.a[i]; 45 return false; 46 } 47 48 num operator -(const num &p,const num &q) 49 { 50 num c=p; 51 for(rg int i=1;i<=c.a[0];++i) 52 { 53 c.a[i]-=q.a[i]; 54 if(c.a[i]<0) c.a[i]+=base,--c.a[i+1]; 55 } 56 while(c.a[0]>0&&!c.a[c.a[0]]) --c.a[0]; 57 return c; 58 } 59 60 num operator *(const num &p,const num &q) 61 { 62 num c; 63 c.a[0]=p.a[0]+q.a[0]-1; 64 for(rg int i=1;i<=p.a[0];++i) 65 for(rg int j=1;j<=q.a[0];++j) 66 { 67 c.a[i+j-1]+=p.a[i]*q.a[j]; 68 c.a[i+j]+=c.a[i+j-1]/base,c.a[i+j-1]%=base; 69 } 70 if(c.a[c.a[0]+1]) ++c.a[0]; 71 return c; 72 }
主模块
1 scanf("%s%s",&a,&b); 2 reverse(a,a+strlen(a)); 3 reverse(b,b+strlen(b));//反转!!! 4 p=num(a),q=num(b);
注意要反转 讲的时候没认真听 然后自己打的时候用的1位的数来测的 一交 “WA!” QAQ!!!
后面没看标准模板自己瓜想最终意识到要反转QAQ!!!
还要注意!的优先级 所以这件事告诉我们要自己多造几组数据,大一点的数据来检查!!!
然后就是各种模板(就是luogu训练场的一个任务)
A+B A*B A-B 数楼梯 B进制
转载于:https://www.cnblogs.com/lxyyyy/p/10736013.html
【模板】高精度 [高精度]相关推荐
- 【算法】高精度(加减乘除)包含高精度*高精度高精度/高精度
一,高精度加法 1.1模板 vector<int> add(vector<int> &A, vector<int> &B) // C = A + B ...
- 高精度运算模板(高精度加减乘除)
文章目录 前言 一.高精度加法模板题 1.题目要求 2.题解 二.高精度减法模板题 1.题目要求 2.题解 三.高精度乘法模板题 1.题目要求 2.题解 四.高精度除法模板题 1.题目要求 2.题解 ...
- 【算法模板】高精度模板(带图详解)
文章目录 一.高精度加法模板 二.高精度减法模板 三.高精度乘法模板 3.1 高精乘以低精(普遍用到) 高精乘以高精 四.高精度除法 4.1.高精度除以低精度 4.2.高精度除以高精度 一.高精度加法 ...
- 【Luogu2142】【模板】高精度减法
problem solution codes //高精减法 //高精度的本质,用长度无限的数组或字符串代替int //原理:模拟减法退位 #include<iostream> #inclu ...
- 【模板】高精度取余函数
int bigmod(int* a,int m) //a为高精度数组,m为除数 {for(int i = 1;i<strlen(c);i++){if(a[i]<m){a[i+1] = 10 ...
- [高精度]高精度的封装
这是我最近学到的一个高精度封装,把高精度运用 c l a s s class class类封装成一个变量 I n t Int Int. #include<bits/stdc++.h> us ...
- ACM公选课第四节高精度 2020.4.9课-2020.4.10补
最近几年有点不火了,java python 没这情况,c++才要优化 longlong 100位算不了 高精度 pku1423 一个数论公式 Stirling 大数 有的用模板 pku2562 nef ...
- C++ 实现高精度的计算
高精度 高精度数通常使用数组来储存,一般高位在后,低位在前(为了方便处理在最高位进位时的插入操作) 高精度加法 按照手算加法的过程一样即可,需要注意处理进位 代码: //A,B是两个数组,分别存放两个 ...
- C++不知算法系列之高精度数值处理算法
1. 前言 什么是高精度数值处理算法? 高精度数值指因受限于计算机硬件的制约,超过计算机所能存储范围的数值.既然不能存储,更谈不上运算. 对此类数值的加.减.乘.除运算需要提供针对性的算法方能获取到结 ...
最新文章
- python爬虫详细步骤-Python爬虫入门,详细讲解爬虫过程
- 关于Class.forName()
- 微量元素与中医药 谋定·大健康医药-李喜贵:辩证研究病理变化
- localdatetime获得时间搓_得用户者得天下,一禅小和尚×往事若茶如何获得消费者认同...
- boost::hana::sum用法的测试程序
- HarmonyOS之设备传感器的功能和使用
- Qt4小技巧——QTextEdit自动滚屏
- Multiple Gift(AtCoder-3731)
- Visual Studio Code打开项目
- 如何到top5%?NLP文本分类和情感分析竞赛总结
- 【DEVOPS】SVN Server迁移 - 从VisualSvnServer到iF.SVNAdmin
- MediaCreationTool.bat操作手册
- DAGAGUARD追加归档方式迁移到rac集群
- Learning without Forgetting 详解(LwF)
- 开关电源中电容与电感时间常数
- 计算机美化标题教案,计算机基础教案标题.doc
- [激光原理与应用-17]:《激光原理与技术》-3- 激光的产生技术 与原理 - 微观粒子、能级、电子、光子、受激辐射
- Linux SYN报文接收及发送SYNACK报文
- 利用Python暴力破解邻居家WiFi密码
- 徐家福对计算机科学发展的影响或作用,徐家福先生的两句话
热门文章
- 调试一个Ext打开的window窗口内嵌Iframe的form提交问题
- 整理的一些常用的CSS HACK
- AppLoader发布
- 火爆全网的《李焕英》通过 AI 还原“复活”了
- 文末送书|增强现实:原理与实践
- 云智视像 | 内推两个年薪可达70万+的CV算法职位~base杭州上海
- 今日头条新出算法大赛!短视频内容理解与推荐竞赛
- 终于!商汤科技开源DAVIS2017视频目标分割冠军代码
- tableview插入刷新_iOS开发之UITableView与UISearchController实现搜索及上拉加载,下拉刷新实例代码...
- 【机器学习】机器学习从零到掌握之九 -- 教你使用K近邻算法形成完整系统