41 lines
1.0 KiB
C++
41 lines
1.0 KiB
C++
#include <bits/stdc++.h>
|
||
|
||
using namespace std;
|
||
typedef long long LL;
|
||
/**
|
||
* 注意:用例:9000000000 1000000000
|
||
* 此时,因为涉及到乘法计算,使用int会爆掉,在洛谷提交会最后一个点无法通过,全部使用LL后可以正常通过测试点。
|
||
*/
|
||
using namespace std;
|
||
/**
|
||
* 功能:高精度除法模板(高精除低精)
|
||
* @param A
|
||
* @param b
|
||
* @param r
|
||
* @return
|
||
*/
|
||
vector<LL> div(vector<LL> &A, LL b, LL &r) {
|
||
vector<LL> 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;
|
||
LL b, r;
|
||
cin >> a >> b;
|
||
vector<LL> A, C;
|
||
for (int i = a.size() - 1; i >= 0; i--)A.push_back(a[i] - '0');
|
||
C = div(A, b, r);
|
||
for (int i = C.size() - 1; i >= 0; i--)printf("%d", C[i]);
|
||
// printf("\n%d", r);
|
||
return 0;
|
||
}
|