单精度除以单精度
int main(){
int a = 0;
int b = 0;
int n = 0;
cin >> a >> b >> n;
cout << a / b << '.';
int t = a % b;
for(int i = 0; i < n; ++ i){
t = t * 10;
cout << t / b;
t = t % b;
}
}
高精度除以单精度
#include<bits/stdc++.h>
using namespace std;
vector<int> div(vector<int> &A, int &B, int &r){
vector<int> C;
for(int i = 0; i < A.size(); ++ i){
r = r * 10 + A[i];
C.push_back(r / B);
r = 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, r = 0;
cin >> a >> b;
vector<int> A;
for(int i = 0; i < a.size(); ++ i) A.push_back(a[i] - '0');
auto C = div(A, b, r);
for(int i = C.size() - 1; i >= 0; -- i) cout << C[i];
cout << endl;
cout << r;
return 0;
}
高精度除以高精度
#include<bits/stdc++.h>
using namespace std;
string a, b;
vector<int> A, B, r;
bool cmp(vector<int> &A, vector<int> &B){
if(A.size() != B.size()) return A.size() > B.size();
for(int i = A.size() - 1; i >= 0; -- i){
if(A[i] != B[i]) return A[i] > B[i];
}
return true;
}
vector<int> sub(vector<int> &A, vector<int> &B){
vector<int> C;
int t = 0;
for(int i = 0; i < A.size() || t; ++ 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> div(vector<int> &A, vector<int> &B, vector<int> &r){
vector<int> C;
r.clear();
if(!cmp(A, B)){
C.push_back(0);
r.assign(A.begin(), A.end());
return C;
}
int j = B.size();
r.assign(A.end() - j, A.end());
while(j <= A.size()){
int k = 0;
while(cmp(r, B)){
vector<int> s = sub(r, B);
r.clear();
r.assign(s.begin(), s.end());
k ++;
}
C.push_back(k);
if(j < A.size()) r.insert(r.begin(), A[A.size() - j - 1]);
if(r.size() > 1 && r.back() == 0) r.pop_back();
j ++;
}
reverse(C.begin(), C.end());
while(C.size() > 1 && C.back() == 0) C.pop_back();
return C;
}
int main(){
cin >> a >> b;
for(int i = a.size() - 1; i >= 0; -- i) A.push_back(a[i] - '0');
for(int i = b.size() - 1; i >= 0; -- i) B.push_back(b[i] - '0');
auto C = div(A, B, r);
for(int i = C.size() - 1; i >= 0; -- i) cout << C[i];
cout << endl;
for(int i = r.size() - 1; i >= 0; -- i) cout << r[i];
return 0;
}