Office中国论坛/Access中国论坛
标题: [高7] 26进制乘法 [打印本页]
作者: LucasLynn 时间: 2005-8-4 18:30
标题: [高7] 26进制乘法
假设某系统使用26进制,分别使用大写英文字母A-Z代表十进制的0-25。
现有两个26进制数值A和B,用字符串表示分别为strA和strB。请用VBA求A和B的积。
备注:
1、A和B以及AB之积均不超过10进制21亿,也就是均在Long类型的范围之内
2、评判标准包含:算法效率、代码合理性、代码可读性、算法可扩展性。不必追求最短代码。
3、程序框架如下,其中...部分为题目所求部分:
Public Sub Main()
Dim strA As String
Dim strB As String
Dim strC As String
strA="JEK"
strB="SLK"
....
Debug.Print "A*B=" & strC
End Sub
[此贴子已经被作者于2005-8-4 14:13:23编辑过]
作者: tmtony 时间: 2005-8-4 19:38
数学和算法的问题,我一看就要晕,以前没学好.只看trynew了
作者: lwwvb 时间: 2005-8-4 22:24
Function Ten2Abc(f As Long) As String
Dim x(100) As Integer
Dim k As Integer
Dim y As Long
Dim i As Integer
Dim s As String
If f = 0 Then k = 1
y = f
Do While y > 0
x(k) = y Mod 26
k = k + 1
y = y \ 26
Loop
For i = k - 1 To 0 Step -1
If x(i) = 0 Then
s = s + "A"
Else
s = s + Mid("BCDEFGHIJKLMNOPQRSTUVWXYZ", x(i), 1)
End If
Next i
Ten2Abc = sEnd FunctionFunction Abc2Ten(s As String) As Long
Dim x(100) As Integer
Dim k As Integer
Dim i As Integer
Dim T As Long
For i = 1 To Len(s)
x(k) = InStr(1, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", Mid(s, i, 1)) - 1
k = k + 1
Next i
For i = k - 1 To 0 Step -1
T = T + x(i) * 26 ^ (k - i - 1)
Next i
Abc2Ten = T
End Function
DEBUG.print TEN2ABC(abc2ten("JEK")*ABC2TEN("SLK"))简单吧.[em05]
作者: 海狸先生 时间: 2005-8-4 23:24
Private Sub Command0_Click()
Dim A As String, B As String
A = "JEK"
B = "SLK"
MsgBox C10T26(C26T10(A) * C26T10(B))
End Sub
Private Function C26T10(strf As String) As Long
Dim bytStrIn() As Byte, i As Integer
bytStrIn = StrReverse(strf)
For i = LBound(bytStrIn) To UBound(bytStrIn) Step 2
C26T10 = C26T10 + (bytStrIn(i) - 65) * 26 ^ (i / 2)
Next
End Function
Private Function C10T26(lngf As Long) As String
Do Until lngf = 0
C10T26 = Chr(65 + (lngf Mod 26)) & C10T26
lngf = lngf \ 26
Loop
End Function
[此贴子已经被作者于2005-8-4 15:38:26编辑过]
作者: LucasLynn 时间: 2005-8-4 23:33
第一天就有两份答案了哈!高兴高兴!
目前测试结果:
海狸:0.019毫秒
lwwvb:0.050毫秒
[此贴子已经被作者于2005-8-4 16:06:03编辑过]
作者: cg1 时间: 2005-8-10 23:27
请参考以下文章及其相关文章:
新手来看:如何进行二进制到六十二进制向十进制的转换?
http://access911.net/?kbid;71FAB61E13DCE8F3
作者: draculaxi 时间: 2005-8-17 21:37
新手请问海狸先生~bytStrIn = StrReverse(strf)
For i = LBound(bytStrIn) To UBound(bytStrIn) Step 2
怎么理解? 字符串是以何种形式储存在数组bytStrIn里的~~为什么是Step 2谢谢[em06]
作者: LucasLynn 时间: 2005-9-28 01:38
以下是引用draculaxi在2005-8-17 13:37:00的发言:
新手请问海狸先生~
bytStrIn = StrReverse(strf)
For i = LBound(bytStrIn) To UBound(bytStrIn) Step 2
怎么理解? 字符串是以何种形式储存在数组bytStrIn里的~~
为什么是Step 2
谢谢[em06]
Unicode形式,一个字符2位。
作者: okmijn 时间: 2006-12-4 05:59
一山还有一山高啊
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) |
Powered by Discuz! X3.3 |