10.高精度除法

 大数除以一个小数

 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 }

猜你喜欢

转载自www.cnblogs.com/fx1998/p/12817623.html