|
|
这回可以输出最小解了
输入:2
输出:
2 41 {4,10,12,15}
解的个数为: 3组
输入:7
输出:
7 120 {21,24,35,40}
解的个数为: 12组
输入:8
输出:
8 135 {24,30,36,45}
解的个数为: 20组
输入:9
输出:
9 153 {26,36,39,52}
解的个数为: 18组
输入:10
输出:
10 168 {30,40,42,56}
解的个数为: 22组
输入:11
输出:
11 180 {36,44,45,55}
解的个数为: 7组
是参考网友7#楼的代码,虽然不太懂
谢谢网友!!
稍加修改后的代码如下:
Private Sub Command1_Click()
Dim n, a As Double
n = Val(Text1)
m = Val(24 * n)
a = Val(1 + n)
Do While a >= Val(n) And a <= 5 * n
b = Val(a + 1)
Do While b <= Val(6 * n)
c = Val(b + 1)
Do While c <= Val(10 * n)
u = Val(a * b * c * n)
v = Val(a * b * c - n * (a * b + (a + b) * c))
If Val(v) > 0 Then
d = Val(u / v)
If c < d And u Mod Abs(v) = 0 Then
k = Val(a + b + c + d)
If k <= m Then
m = k
s = "{" & a & "," & b & "," & c & "," & d & "}"
s2 = n & " " & m & " " & s & vbCrLf
s3 = s3 + 1
End If
End If
End If
c = Val(c + 1)
Loop
b = Val(b + 1)
Loop
a = Val(a + 1)
Loop
If s3 > 0 Then
Text2 = s2 & "解的个数为: " & s3 & "组"
Else
Text2 = "无解"
End If
End Sub
Private Sub Command2_Click()
Text1 = ""
Text2 = ""
Text3 = ""
End Sub
|
|