两个大数的高精度加法:
模板题题目连接:https://www.acwing.com/problem/content/793/
代码vector高精度减法add(vector &A, vector &B) { if (A.size() < B.size()) return add(B, A); vector C; int t = 0; for (int i = 0; i < A.size(); i ++ ) { t += A[i]; if (i < B.size()) t += B[i]; C.push_back(t % 10); t /= 10; } if (t) C.push_back(t); return C; }
两个大数的减法
模板题题目连接:https://www.acwing.com/problem/content/794/
代码// C = A - B, 满足A >= B, A >= 0, B >= 0 vector高精度乘法sub(vector &A, vector &B) { vector C; for (int i = 0, t = 0; i < A.size(); i ++ ) { t = A[i] - t; if (i < B.size()) t -= B[i]; C.push_back((t + 10) % 10); if (t < 0) t = 1; else t = 0; } while (C.size() > 1 && C.back() == 0) C.pop_back(); return C; }
a是高精度、b是低精度
模板题题目连接:https://www.acwing.com/problem/content/795/
代码// C = A * b, A >= 0, b >= 0 vector高精度除法 模板题mul(vector &A, int b) { vector C; int t = 0; for (int i = 0; i < A.size() || t; i ++ ) { if (i < A.size()) t += A[i] * b; C.push_back(t % 10); t /= 10; } while (C.size() > 1 && C.back() == 0) C.pop_back(); return C; }
题目连接:https://www.acwing.com/problem/content/796/
代码// A / b = C ... r, A >= 0, b > 0 vectorPythondiv(vector &A, int b, int &r) { vector C; r = 0; for (int i = A.size() - 1; i >= 0; i -- ) { r = r * 10 + A[i]; C.push_back(r / b); r %= b; } reverse(C.begin(), C.end()); while (C.size() > 1 && C.back() == 0) C.pop_back(); return C; }
因为python的int本身就是一个大数,所以如果有大数类的题目,可以直接使用python写
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)