无解?Private Sub Form_Click() Dim i As Long Dim j As Long Dim k As Long Dim m As Long
Dim s As String
For i = 1234 To 9876 For j = 1 To 9 k = i * j If k < 10000 Then s = i & j & k For m = 1 To 9 If InStr(1, s, Str(m), vbTextCompare) = 0 Then s = "": Exit For Next
If s <> "" Then Me.Print i & " * " & j & " = " & k End If End If Next Next Me.Print "== Fin ==" End Sub
ABCD * E = FGHI 关键找 E 的值,首先 E 不能取值 1;由于最高位 A * E 不产生进位,只能两种情况 一、A 取值 1,下面有进位,F 比 E 大,所以 E 的取值范围为 2~8 二、A 取值 2,E 取值 3 三、A 取值 3,E 取值 2因为不能重复取值,确定 E 后,可以限制 D、I 的取值范围剩下5个值应该简单多了,排列组合也只有 120 种,用程序排列测试一下就可以了
Private Sub Form_Click() Dim i As Long Dim j As Long Dim k As Long Dim m As Long
Dim s As String
For i = 1234 To 9876 For j = 1 To 9 k = i * j If k < 10000 Then s = i & j & k For m = 1 To 9 If InStr(1, s, m, vbTextCompare) = 0 Then s = "": Exit For Next
If s <> "" Then Me.Print i & " * " & j & " = " & k End If End If Next Next Me.Print "== Fin ==" End Sub
Dim i As Long
Dim j As Long
Dim k As Long
Dim m As Long
Dim s As String
For i = 1234 To 9876
For j = 1 To 9
k = i * j
If k < 10000 Then
s = i & j & k
For m = 1 To 9
If InStr(1, s, Str(m), vbTextCompare) = 0 Then s = "": Exit For
Next
If s <> "" Then
Me.Print i & " * " & j & " = " & k
End If
End If
Next
Next
Me.Print "== Fin =="
End Sub
关键找 E 的值,首先 E 不能取值 1;由于最高位 A * E 不产生进位,只能两种情况
一、A 取值 1,下面有进位,F 比 E 大,所以 E 的取值范围为 2~8
二、A 取值 2,E 取值 3
三、A 取值 3,E 取值 2因为不能重复取值,确定 E 后,可以限制 D、I 的取值范围剩下5个值应该简单多了,排列组合也只有 120 种,用程序排列测试一下就可以了
Dim i As Long
Dim j As Long
Dim k As Long
Dim m As Long
Dim s As String
For i = 1234 To 9876
For j = 1 To 9
k = i * j
If k < 10000 Then
s = i & j & k
For m = 1 To 9
If InStr(1, s, m, vbTextCompare) = 0 Then s = "": Exit For
Next
If s <> "" Then
Me.Print i & " * " & j & " = " & k
End If
End If
Next
Next
Me.Print "== Fin =="
End Sub
(a(1)*1000+a(2)*100+a(3)*10+a(4))*a(5)=(a(6)*1000+a(7)*100+a(8)*10+a(9))
判断是否成立,不成立换位做循环,直致成立!!
1738 * 4 = 6952
1963 * 4 = 7852
VB真是神奇啊,instr函数的String型参数居然可以用Long型
不过samwzhang(分全给我)这个说错了,得到的是两位的Dim m As Long
m = 1
MsgBox "|" & Str(m) & "|,长度是" & Len(Str(m))
'| 1|,长度是2
知道了:
1 Instr函数的string可以直接用整形数
2 Str()函数转换正数为字符串前面带空格其实,用CStr就可以了,我习惯用CStr,Str没有用过,感觉还是CStr好用,CStr返回的是字符串,不象Str返回Variant