逐步试商法
- 被除数a[],除数是long long型b
- 商的位数:被除数-除数的位数+1
c[0]=a[0]-lb+1; - 如果被除数小,商的位数为1
- 每次除后的余数乘10+下一位数,继续试商
- 清除前导0
代码
#include <iostream>
#include<cstring>
using namespace std;
int main(){
char a1[10001];
long long b,a[10001],c[10001];
cin>>a1>>b;
a[0]=strlen(a1);
for(int i=1;i<=a[0];++i){
a[i]=a1[i-1]-'0';
}
long long r=b;
int lb=0;
while(r){
r/=10;
++lb;
}
c[0]=a[0]-lb+1;
if(c[0]<0) c[0]=1;
for(int i=1;i<lb;i++){
r=r*10+a[i];
}
for(int i=lb;i<=a[0];i++){
c[i-lb+1]=(r*10+a[i])/b;
r=(r*10+a[i])%b;
}
int lc=1;
for(int i=1;i<c[0] && c[i]==0;++i){
lc++;
}
for(int i=lc;i<=c[0];++i){
cout<<c[i];
}
return 0;
}