修改了AcWing的除法模板
从string转存的A的时候,就是从高到底的,直接从高到底依次存入 ,因为再div函数也是需要从高到低的除,没必要再反写了。
最后,因为没有反转数组,故高位0在前面,需要用erase删除。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<int> div(vector<int> &A,int b,int &r){
vector<int> C;
r=0;
for(int i=0;i<A.size();i++){
r=r*10+A[i];
C.push_back(r/b);
r%=b;
}
int cur=0;
//把cur和C.size()都看成C上的一个位置,cur只能到C.size()-1之前的位置,这样想就不那么抽象了。
while(cur<C.size()-1 && C[cur]==0) cur++;
C.erase(C.begin(),C.begin()+cur);
return C;
}
int main(){
string a;
int b,r=0;
cin>>a>>b;
vector<int> A,C;
for(int i=0;i<a.size();i++) A.push_back(a[i]-'0');
C=div(A,b,r);
for(int i=0;i<C.size();i++) cout<<C[i];
cout<<endl<<r<<endl;
return 0;
}
是高精度除法么,字符串一位一位的读法?
用string格式读入,在转存到vector里面,在一位一位的除以b