大整数运算
#include <iostream>#include <vector>#include <algorithm>using namespace std;const int N = 1e6 + 10;// 加法vector<int> add(vector<int> &A,vector<int> &B){ vector<int>C; int k = 0; for(int i = 0; i < A.size() || i < B.size(); i ++){ if(i < A.size()) k += A[i]; if(i < B.size()) k += B[i]; C.push_back(k % 10); k /= 10; } if(k) C.push_back(1); return C;}//减法//判断A是否大于Bbool cmp(vector<int> &A,vector<int> &B){ if(A.size() != B.size()) return A.size() > B.size(); else { for(int i = A.size() - 1; i >= 0; i --){ if(A[i] != B[i]) return A[i] > B[i]; } } return true;}// 减法 (A >= B)vector<int> sub(vector<int> &A,vector<int> &B){ vector<int>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;}//乘法//高精度 * 低精度vector<int> mul(vector<int> &A, int b){ vector<int> 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; } return C;}//除法//高精度 / 低精度 商是C,余数是rvector<int> div(vector<int> &A, int b,int &r){ vector<int> 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;} int main(){ string a; int b; cin >> a >> b; vector<int> A; for(int i = a.size() - 1; i >= 0; i --) A.push_back(a[i] - '0'); int r; auto C = div(A, b,r); for(int i = C.size() - 1; i >= 0; i --) printf("%d",C[i]); cout << endl << r << endl; return 0; }