高精度/低精度
#include<iostream>
#include<vector>
#include<algorithm>
#include<cstdio>
using namespace std;
//A/b,商是c,余数是r//假设A为123,123/9=13余数6
vector<int> div(vector<int>&A,int b,int &r)
{
vector<int >C;
r=0;
for(int i=A.size()-1;i>=0;i--)//使321变成123,从百位开始除
{
r=r*10+A[i];
C.push_back(r/b);
r%=b;// 12/9,商1余数为3
}
//由于在除法运算中,高位到低位运算,因此C的前导零都在vector的前面而不是尾部,vector只有删除最后一个数字pop_back是常数复杂度,
//而对于删除第一位没有相应的库函数可以使用,而且删除第一位,其余位也要前移,
//因此我们将C翻转,这样0就位于数组尾部,可以使用pop函数删除前导0
reverse(C.begin(),C.end());
while(C.size()>1&&C.back()==0)
C.pop_back();//得出的数为0111,去除0
return C;
}
int main()
{
int i;
string a;
int b;
cin>>a>>b;
vector<int> A;
for(i=a.size()-1;i>=0;i--)
A.push_back(a[i]-'0');//使123变成321
int r;
auto C=div(A,b,r);
for(i=C.size()-1;i>=0;i--)
printf("%d",C[i]);
cout<<endl<<r<<endl;
return 0;
}
“秋千水,竹马道,一眼见你万物不及”