#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef unsigned char Char;
//以下是两个10进制串的除法
//xx的位数大于等于yy的位数
int div1(Char *xx,Char *yy,int len)//len为除数yy的位数
{
int quot=0;
while( strncmp(xx,yy,len)>=0 )
{
Char *p=xx+len-1,*q=yy+len-1;
int cy;//借位标志
for(cy=0;q>=yy;q--,p--)
if(*p>=*q+cy)
{
*p-=*q+cy;cy=0;
*p+='0';
}
else
{
*p-=*q+cy;cy=1;
*p+=10+'0';
}
quot++;
}
return quot;
}
//下面这个函数还有点问题void divs(Char *xx,Char *yy)
{ int len;//len为除数yy的位数
Char *px=xx,*pz,*zz=malloc(strlen(xx)+1);
if(zz==NULL)abort();
len=strlen(yy);
for(pz=zz; ;pz++,px++)
{
if(strlen(px)<strlen(yy))break;
*pz=div1(px,yy,len)+'0';
if(strlen(px)>strlen(yy))
{*(px+1)+=10*(*px-'0');}
}
*pz='\0';
strcpy(yy,px-1);
strcpy(xx,zz);
free(zz);
}
main( )
{
char s1[100],s2[100];
gets(s1);//输入被除数
gets(s2);//输入除数
divs(s1,s2);
puts(s1);//输出商
puts(s2);//输出余数
}