ac_794高精度除法
题目描述
题目大意&链接
给定两个正整数,计算高精度整数除以低精度整数。
输入输出样例:
输入:
7
2
输出:
3
1
详情:ac_794高精度除法
解题思路
高精度除法需要注意3点。
- 除法和加减乘法不同,它可以正序存储,但为统一模板,这里也采用逆序将其存储,因此div函数的循环条件需要更改:
for(int i = A.size() - 1; i >= 0; i--)
{
...
} - 余数 r 要模拟除法运算,r/b 作商的数值位;r %= b 作下一位的余数:
for(int i = A.size() - 1; i >= 0; i--)
{
r = r * 10 + A[i];
c.push_back(r / b);
r %= b;
} - 由于是逆序存储且逆序输出,则答案需要反转一下并去除结果的前导0:
reverse(c.begin(), c.end());
while(c.size() > 1 && c.back() == 0) c.pop_back();
完整代码
|
时间和空间复杂度
假设 a 和 b 的长度分别为 n 和 m,则:
时间复杂度:O(n + m)
空间复杂度:O(n + m)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 ZW_Blog!