AcWing 794. 高精度除法
原题链接
简单
作者:
杨某
,
2022-02-17 22:59:35
,
所有人可见
,
阅读 167
C++ 代码
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
vector<int> div(vector<int> &A,int b,int &r){
vector<int> C;
r=0;//初始化
for(int i=A.size()-1;i>=0;i--){//除法从最高位(数组最后)开始
r=r*10+A[i];//上一位的余数*10加上这一位的数
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;
int b;
cin>>a>>b;
vector<int> A;
for(int i=a.size()-1;i>=0;i--) A.push_back(a[i]-'0');
//存大整数,低位数在数组前
int r;//余数
auto B=div(A,b,r);
for(int i=B.size()-1;i>=0;i--) cout<<B[i];
cout<<endl<<r<<endl;
return 0;
}