2 楼算法中能算核心算法。
修正很简单的啊。要么计算前修正
要么计算后修正。
计算后修正:从 num1 判断起,如果 为 0 ,那么从前面一位借1位来,手动写一个借位减法就是了。
那个核心算法是我在 excel 里用公式简单验算了一下而以。
--------------------------------------------
0 + 0 * 25 + 0 * 25 * 25 + 0 * 25 * 25 *25 = 0
1 + 0 * 25 + 0 * 25 * 25 + 0 * 25 * 25 *25 = 1
25 + 0 * 25 + 0 * 25 * 25 + 0 * 25 * 25 *25 = 25
1 + 1 * 25 + 0 * 25 * 25 + 0 * 25 * 25 *25 = 26
24 + 24 * 25 + 24 * 25 * 25 + 24 * 25 * 25 *25 = 390624
25 + 25 * 25 + 25 * 25 * 25 + 25 * 25 * 25 *25 = 406900

程序代码:
Dim num1 As Long, num2 As Long
Dim num3 As Long, num4 As Long
Dim i As Long
i = Val(Text1.Text)
'If i <= 0 Then Exit Sub '确保输入为正数
num4 = Int(i / (25 * 25 * 25))
num3 = Int((i - num4 * 25 * 25 * 25) / (25 * 25))
num2 = Int((i - num4 * 25 * 25 * 25 - num3 * 25 * 25) / 25)
num1 = i - num4 * 25 * 25 * 25 - num3 * 25 * 25 - num2 * 25
'num1 或者写成
'num1 = i Mod 25
If num1 = 0 Then '如果=0,判断一下能不能借位
If num2 > 0 Or num3 > 0 Or num4 > 0 Then
num1 = 25 '能借位,进行借位处理
num2 = num2 - 1
End If
End If
If num2 < 1 Then '如果=0 或 -1,需要借位
If num3 > 0 Or num4 > 0 Then '能借位,进行借位处理
num2 = 25 + num2
num3 = num3 - 1
End If
End If
If num3 < 1 Then '同上
If num4 > 0 Then
num3 = 25 + num3
num4 = num4 - 1
End If
End If
Label1.Caption = num1
Label2.Caption = num2
Label3.Caption = num3
Label4.Caption = num4
Label5.Caption = num1 & " + " & num2 & " * 25 + " & num3 & " * 25 * 25 + " & num4 & " * 25 * 25 *25 = " & i
Debug.Print Label5.Caption
[此贴子已经被作者于2022-9-18 12:17编辑过]