高精度除法常用于计算两个数位较大的数之间的除法运算,设被除数为s1,除数为s2,保存在字符串中。除法的基本思想是反复做减法,s1能够被s2减多少次,商就是多少。但是这样做显然比较慢。如下算法做了部分优化,以48695除以324为例:
①将324扩大100倍,32400只能被48695减去1次,则百位上的商是1;
②将324扩大10倍,3240能被前一次余的16295减去5次,则十位上的商就是5;
③对于324,不能被最后剩余的95减去,则个位上的商为0。所以最后的商的整数部分为150。
程序运行界面如图所示。
(1)
根据该算法计算5731423除以23345,十位上的商是。
(2)
阅读以下程序,在画线处填入合适的代码。
Dim s1, s2, s3, s, ans As String
Dim tot As Integer, t As Integer
Private Sub Command1_Click( )
Dim a, b, i, j, length As Integer
s1=Text1.Text:s2=Text2.Text:s3=""
Length=Len(s1)-Len(s2)
For i=1 To length
s2=s2+"0"
Next i
For i=0 To length
s=Mid(s2, 1, Len(s2)-1):tot=0
Do While ① or(Len(s1)=Len(s)And s1>=s)
tot=tot+1
ans="":flag=False
a=Len(s1):b=Len(s)
For j=a To 1 Step-1
t=0
If flag Then
t=-1:flag=False
End If
If b>0 Then
t=t+Val(Mid(s1, j, 1))-Val(Mid(s, b, 1))
Else
t= ②
End If
If t<0 Then
③
flag=True
End If
ans=t&ans:b=b-1
Next j
s1=Val(ans)
Loop
s3=s3&tot
Next i
i=1
Do While Mid(s3,i,1)="0"
i=i+1
Loop
Text3.Text=Mid(s3,i,Len(s3))
End Sub
以上程序段运行时,为了实现上述功能,画线处应填入的代码分别为:①;②;③。
答案: 【1】4
【1】Len(s1)>Len(s)【2】t+Val(Mid(s1,j,1))【3】t=t+10