|
#include<iostream>
#include<cstring>
#include<string>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
#define MAXLENGTH 5000
int A[MAXLENGTH]={0};//被除数
int B[MAXLENGTH]={0};//除数
int C[MAXLENGTH]={0};//余数
int Ans[MAXLENGTH]={0};//商
int LengthA,LengthB,LengthC,LengthAns;//被除数、除数、余数、商的位数
void ReadData(int *A,int &Len)
{
string str;
cin>>str;
Len=str.length();//获取长度
for(int i=0;i<Len;i++)
{
A[i]=str[i]-'0';//字符转变为数字
}
reverse(A,A+Len); //位数翻转
}
/*比较余数C与除数B的大小*/
bool cmp()
{
if(LengthC == LengthB)
{
for(int i=LengthC-1;i>=0;i--)
{
if(C[i] != B[i])
return C[i]>B[i];
}
return true;
}
return LengthC>LengthB;
}
/*C减B*/
void Minus()
{
int c=0;//借位
for(int i=0;i<LengthC;i++)
{
C[i]=C[i]-B[i]-c;
if(C[i]<0)
{
C[i]+=10;
c=1;
}
else
{
c=0;
}
}
while(LengthC>1 && C[LengthC-1]==0)
LengthC--;
}
int main()
{
ReadData(A,LengthA);
ReadData(B,LengthB);
LengthC=0;
for(int i=LengthA-1;i>=0;i--)
{
for(int j=LengthC;j>=1;j--)
C[j]=C[j-1]; //移位
C[0]=A[i];
LengthC++;
while(cmp())//此时C大于B,进行减法操作
{
Minus();
Ans[i]++;
}
}
LengthAns = LengthA;
while(LengthAns>1 && Ans[LengthAns-1]==0)
LengthAns--;//商的位数
/*输出商*/
for(int i=LengthAns-1;i>=0;i--)
{
cout<<Ans[i];
}
cout<<endl;
/*输出余数*/
for(int i=LengthC-1;i>=0;i--)
{
cout<<C[i];
}
cout<<endl;
return 0;
}
|
|