ABCDEFGHIJK➗S
我们在计算时会列竖式,我们会先从最高位开始算起,然后算之前余数*10+当前位之后,再除以s,之后一直都是这样
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
string sa;
vector<int> div(vector<int> a,int b,int &r)//a是被除数,b是除数,r是余数
{
vector<int> c;//商
for(int i=a.size()-1;i>=0;i--)
{
c.push_back((r*10+a[i])/b);
r=(r*10+a[i])%b;
}
reverse(c.begin(),c.end());//要去掉前导0,所以需要反转
while(c.size()>1&&c.back()==0)c.pop_back();
return c;
}
int main()
{
string sa;
int b,c=0;
vector<int> a;
cin>>sa>>b;
for(int i=sa.size()-1;i>=0;i--)a.push_back(sa[i]-'0');
vector<int>ans=div(a,b,c);
for(int i=ans.size()-1;i>=0;i--)cout<<ans[i];
cout<<endl<<c<<endl;
return 0;
}