一道有趣的数学题
题目:一个两位数减一个两位数的差,然后除以一个一位数,得出的结果是一个两位数
但是所使用的数字中不能重复和第一个数字减第二个数的结果也不能和其它的数字重复.
代码如下:
Private Function NumberBool(NumberOne As String, NumberStr1 As String, NumberStr2 As String) As Boolean
Dim pos As Integer
pos = InStr(NumberOne, NumberStr1)
If pos = 0 Then
pos = InStr(NumberOne, NumberStr2)
If pos = 0 Then
NumberBool = True
End If
Else
NumberBool = False
End If
End Function
Private Function NumberBool1(NumberOne As String, NumberStr As String) As Boolean
Dim pos As Integer
pos = InStr(NumberOne, NumberStr)
If pos = 0 Then
NumberBool1 = True
Else
NumberBool1 = False
End If
End Function
Private Sub Command1_Click()
Text1.Text = ""
Dim one As Integer '被除数 (one-tow)/num=ret(表达式)
Dim two As Integer '除数
Dim num As Integer '个位数
Dim ret As Single '结果
Dim one_two As Integer '减后的数
Dim cou As Integer '有多少种结果
cou = 0
Dim pos As Integer
Dim one1 As String '被除数的第一个字符
Dim one2 As String '被除数的每二个字符
Dim two1 As String '除数的第一个字符
Dim two2 As String '除数的第二个字符
Dim ret1 As String '结果的第一个字符
Dim ret2 As String '结果的第二个字符
Dim one_two1 As String '减后的第一个字符
Dim one_two2 As String '减后的第二个字符
For one = 10 To 99
For two = 10 To one - 1
DoEvents
Label1.Caption = CStr(one) '用于看的(没什么意义的)
two1 = Left(CStr(two), 1) '除数第一个字符
two2 = Right(CStr(two), 1) '除数第二个字符
one1 = Left(CStr(one), 1) '被除数的第一个字符
one2 = Right(CStr(one), 1) '被除数的每二个字符
If two1 <> two2 And one1 <> one2 Then '1 '除数和被除数中的各字符不相同
If NumberBool(CStr(one), two1, two2) = True Then '2 '被除数中不存在除数中的字符
If NumberBool(CStr(two), one1, one2) = True Then '3 '除数中不存在被除数中的字符
one_two = one - two
one_two1 = Left(CStr(one - two), 1)
one_two2 = Right(CStr(one - two), 1)
If one_two1 <> one_two2 And NumberBool(CStr(one), one_two1, one_two2) = True And NumberBool(CStr(two), one_two1, one_two2) = True Then '4 所减后的字符不相同
For num = 2 To 9
DoEvents
If CStr(num) <> one_two1 And CStr(num) <> one_two2 And NumberBool1(CStr(one), CStr(num)) = True And NumberBool1(CStr(two), CStr(num)) = True Then '5 所要除的数不和前面的相同
ret = one_two / num
If ret = Int(one_two / num) Then '6 如果除出的是整数
ret1 = Left(CStr(ret), 1)
ret2 = Right(CStr(ret), 1)
If ret1 <> ret2 And NumberBool(CStr(one), ret1, ret2) = True And NumberBool(CStr(two), ret1, ret2) = True And NumberBool(CStr(one_two), ret1, ret2) = True And NumberBool1(CStr(ret), CStr(num)) = True Then '7 最后结果的字符和上面的不同
If ret >= 10 Then '8 得出的结果是两位数
Text1.Text = Text1.Text & CStr(one) & "-" & CStr(two) & "=" & CStr(one_two) & vbTab
Text1.Text = Text1.Text & CStr(one_two) & "/" & CStr(num) & "=" & CStr(ret) & vbCrLf
cou = cou + 1
End If '8
End If '7
End If '6
End If '5
Next num
End If '4
End If '3
End If '2
End If '1
Next two
Next one
Label1.Caption = "完成"
MsgBox "有" & CStr(cou) & "种结果", vbOKOnly + vbInformation, "所有的可能"
End Sub
以上用到了一个text、label、command控件
详情请到我的主页里下载
主页:http://runrelax.533.net E-mail:run.relax@163.com QQ:57952855