void divide(string a, ll b){
ll B[10];
for(int i = 0; i < 10; i++){//存除数的倍数
B[i] = i*b;
}
string ans = "";
ll r;
ll A = a[0]-'0';
for(int i = 1; i <= a.length(); i++){//从高位开始
int pos = upper_bound(B, B+10,A)-B;
pos--;
ans += (pos+'0');
r = A - B[pos];
A = r*10 + (a[i]-'0');
}
//输出(去掉前缀0)
bool flag = false;
for(int i = 0; i < ans.length(); i++){
if(ans[i] != '0') flag = true;
if(flag == true) cout << ans[i];
}cout << endl;
cout << r << endl;//余数
}
大数除法
最新推荐文章于 2023-12-13 06:36:51 发布