#include <bits/stdc++.h>
using namespace std;
#define vi vector<int>
string a, b;
vi va, vb, vr;
bool cmp(vi &va, vi &vb)
{
if(va.size() != vb.size()) return va.size() > vb.size();
for(int i = va.size()-1; i >= 0; i--)
if(va[i] != vb[i]) return va[i] > vb[i];
return true;
}
vi sub(vi &va, vi &vb)
{
vi vc;
int t = 0;
for(int i = 0; i < va.size(); i++)
{
t = va[i] - t;
if(i < vb.size()) t -= vb[i];
vc.push_back((t+10) % 10);
if(t < 0) t = 1;
else t = 0;
}
while(vc.size() > 1 && vc.back() == 0) vc.pop_back();
return vc;
}
vi div(vi &va, vi &vb, vi &vr)
{
vi vc;
int j = vb.size();
vr.assign(va.end()-j, va.end());
while(j <= va.size())
{
int k = 0;
while(cmp(vr, vb))
{
vi tmp = sub(vr, vb);
vr.assign(tmp.begin(), tmp.end());
k++;
}
vc.push_back(k);
if(j < va.size()) vr.insert(vr.begin(), va[va.size()-j-1]);
while(vr.size() > 1 && vr.back() == 0) vr.pop_back();
j++;
}
reverse(vc.begin(), vc.end());
while(vc.size() > 1 && vc.back() == 0) vc.pop_back();
return vc;
}
int main()
{
cin >> a >> b;
for(int i = a.size()-1; i >= 0; i--) va.push_back(a[i]-'0');
for(int i = b.size()-1; i >= 0; i--) vb.push_back(b[i]-'0');
vi vc = div(va, vb, vr);
for(int i = vc.size()-1; i >= 0; i--) printf("%d", vc[i]);
printf("\n");
for(int i = vr.size()-1; i >= 0; i--) printf("%d", vr[i]);
return 0;
}
真是不知道这个程序错在哪,被下面这组数据hack了
2415
71942
这个程序会输出一个回车,然后是一行乱码????