AcWing 794. 高精度除法
原题链接
简单
作者:
BanLi
,
2021-01-25 10:03:31
,
所有人可见
,
阅读 283
新手记录
C++ 代码
#include<iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> div(vector<int> &sa, int b, int &r){
vector<int> sc;
r = 0;
for(int i = sa.size() - 1; i >= 0; i--){ //从高位开始进行除法
r = r * 10 + sa[i]; //每次由前一位剩下的余数乘上10加上本位
sc.push_back(r / b); //得到当前位除数
r %= b; //计算下次参与计算使用的余数
}
reverse(sc.begin(), sc.end()); //将相除得到的结果取反,同一结果,方便主函数的倒叙输出
while(sc.size() > 1 && sc.back() == 0) //去除前导0
sc.pop_back();
return sc; //最后的余数存储在r中
}
int main(){
string a;
vector<int> sa;
int b;
cin >> a >>b;
for (int i = a.size() - 1; i >= 0; i--)
sa.push_back(a[i] - '0');
int r;
auto sc = div(sa, b, r);
for (int i = sc.size() - 1; i >= 0; i--)
cout << sc[i];
cout << endl << r << endl;
return 0;
}