大数除以一个小数
1 #include <bits/stdc++.h> 2 using namespace std; 3 //A/b商是C,余数是r 4 vector<int> div(vector<int> &A, int b, int &r) { 5 vector<int> C; 6 r = 0; 7 //注意除法是从最高位开始算的 8 //前面那仨都是从最低位开始算 9 for (int i = A.size() - 1; i >= 0; i--) { 10 r = r * 10 + A[i]; 11 C.push_back(r / b); 12 r %= b; 13 } 14 //C[0]是最高位 15 reverse(C.begin(), C.end()); 16 while (C.size() > 1 && C.back() == 0) { 17 C.pop_back(); 18 } 19 return C; 20 } 21 int main () { 22 string a; 23 int b; 24 cin >> a >> b; 25 vector<int> A, C; 26 for (int i = a.length() - 1; i >= 0; i--) { 27 A.push_back(a[i] - '0'); 28 } 29 int r; 30 C = div(A, b, r); 31 for (int i = C.size() - 1; i >= 0; i--) { 32 cout << C[i]; 33 } 34 cout << endl << r << endl; 35 return 0; 36 }