#include<stdio.h>
#include<string.h>
char a[10001],b[10001];
int result[100001];
int len1,len2;
//全局变量对函数内部,和主函数都可以使用
void reduce()
{
int i=0,j;
for(i=0;i<len1;i++)
if(a[i]!='0')
{
j = i;
break;//找到每次减完之后不为零的首项
}
for(;i<len2;i++)
a[i] = a[i]-b[i]+'0';//相互减
for(i=len2-1;i>j;i--)
{
if(a[i]<'0')
{
a[i]+=10;
a[i-1]--;
}
}
}
int main()
{
scanf("%s %s",a,b);
int i,p=0,j;
result[p] = 0;
len1 = strlen(a);
len2 = strlen(b);
if(len1<len2||(len1==len2&&strcmp(a,b)<0))
printf("0");
else if(len1==len2&&strcmp(a,b)==0)//两个数相等
printf("1");
else
{//大循环 len1=len2 此时长度相同 并且不能再次相减 因此循环结束
while(1)//一个位置一个位置减
{
while(strncmp(a,b,len2)>=0)//判断前n个字符的大小,能减的话,减一次这个位置上的值+1
{
reduce();
result[p]++;
}
p ++;//到下一个位置
if(len2 == len1)//在len2==len1 时候且已经减完最后一轮 函数可以结束
break;
len2++; //除数长度+1;
for(i=len2-1;i>=0;i--)
b[i]=b[i-1];//除数全部都往后移动一位
b[0]='0';//第一项重新设置为0
}
for(i=0;i<len1;i++)
if(result[i]!=0)//找到结果第一个开头,因为可能第一位为0;
break;
for(;i<p;i++)
printf("%d",result[i]);
}
}
1004041
102
第一次:re[0] = 0;
1004041
0102
第二次:re[1] = 9;可以减9次
0086041
00102
第三次:re[2] = 8;可以减8次
0004441
000102
第四次:re[3] =4;可以减4
0000361
0000102
第五次:re[4] = 3;可以减3次
0000055
0000102//循环结束
re = [09843]
故结果为9843