高精度除法
Posted L K P love C J R
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高精度除法相关的知识,希望对你有一定的参考价值。
#include<iostream>
#include<vector>
#include<string>
#include<cstdio>
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+a[i]作为下一次的被除数。
C.push_back(r/b);//r/b就是结果。
r%=b;
}
//除法是高位先除所以高位在vector的C[0]位置所以要reverse一下
reverse(C.begin(),C.end());
while(C.size()>1&&C.back()==0) C.pop_back();//防止出现01111这种商把0出去
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 C =div(A,b,r);//auto 自动类型和转化
for(int i=a.size()-1;i>=0;i--) printf("%d",C[i]);
cout<<endl<<r<<endl;
system("pause");
return 0;
}
以上是关于高精度除法的主要内容,如果未能解决你的问题,请参考以下文章