高精度除法
除数与被除数都是大整数
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
string a,b;
vector<int>dend,sor;
bool aisbigger(vector<int>&a,vector<int>&b){
if(a.size()!=b.size())return a.size()>b.size();
for(int i=0;i<a.size();++i){
if(a[i]!=b[i])return a[i]>b[i];
}
return true;
}
vector<int> sub(vector<int>&a,vector<int>&b){
vector<int>result=a;
for(int i=a.size()-1,j=b.size()-1;j>=0;--i,--j){
if(result[i]<b[j]){
result[i-1]--;
result[i]+=10;
}
result[i]=result[i]-b[j];
}
while(result.size()>1&&result[0]==0)
result.erase(result.begin());
return result;
}
int main(){
cin>>a>>b;
for(int i=0;i<a.length();++i)dend.push_back(a[i]-'0');
for(int i=0;i<b.length();++i)sor.push_back(b[i]-'0');
vector<int>ans,r;
for(int i=0;i<a.length();++i){
r.push_back(dend[i]);
int d=0;//除得的数
while(aisbigger(r,sor)){
r=sub(r,sor);d++;
}
ans.push_back(d);
}
while(ans.size()>1&&ans[0]==0)
ans.erase(ans.begin());
for(int i=0;i<ans.size();++i)
cout<<ans[i];
return 0;
}