高精度算法
1.高精度加法
这个比较简单一些,主要是考虑满10进位的问题,直接写代码就可以。(若数字很大的话,不太好运算,所以将数字转化成字符串的形式输入)
#include <iostream> using namespace std; const int N = 100010; int A[N], B[N], C[N]; int Add(int a[], int b[], int c[], int cnt) { int t = 0;//t表示进位 for (int i=1; i<=cnt; i++) { t += a[i] + b[i];//进位加上a和b第i位上的数 c[i] = t % 10;//c的值就是进位的个位数 t /= 10;//把t的个位数去掉只剩下十位数,即只剩下这个位置的进位 } if (t) c[++cnt] = 1;//如果t==1,表示还有一个进位,要补上 return cnt; } int main() { string a, b; cin >> a >> b; //A和B倒着放进int数组,因为有进位,倒着放容易处理 int cnt1 = 0; for (int i=a.size()-1; i>=0; i--) A[++cnt1] = a[i] - '0'; int cnt2 = 0; for (int i=b.size()-1; i>=0; i--) B[++cnt2] = b[i] - '0'; int tot = Add(A, B, C, max(cnt1, cnt2)); //因为A和B是倒着放的,所以C也要倒着输出 for (int i=tot; i>=1; i--) cout << C[i]; }
2.高精度减法
(时间复杂度为O(n)),
和高精度加法差不多,值得注意的是①减法的借位处理②相减为负数的处理③前导0的处理
//高精度加法是一样的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)