Hãy tìm giúp các số mà các chữ cái đang làm đại diện cho nó.
Xin vui lòng cho hỏi, đại diện ký tự đó là số nguyên hay số thực ạ?
Và có phải rằng khi đã là A thì các ký tự khác phải khác A đúng không? Và Len(A) = 1 hay nhiều hơn ạ?
Em hỏi lại:Hãy tìm giúp các số mà các chữ cái đang làm đại diện cho nó.
Dĩ nhiên phải tínhBạn làm theo phương pháp nào? Ngẫu nhiên hay có tính toán?
À quên, do F là số 0 bạn.Ủa tui thấy bác SA chia cho 5 con số lận mà bạn ABCDE / FGHIJ
Sub chay()
Dim M As String, k As Byte, i As Long, j As Long, x As Byte, d As Byte
k = 1
For i = 11106 To 98765
For j = 1234 To 10974
If i / j = 9 Then
'[D1] = i
M = Format(i, "00000") & Format(j, "00000")
For x = 2 To 10
If InStr(x, M, Mid(M, x - 1, 1)) = 0 Then
d = 1
Else
d = 0
Exit For
End If
Next
If d = 1 Then
Cells(k, "A") = i
Cells(k, "B") = j
k = k + 1
End If
End If
Next
Next
End Sub
Bạn tìm giúp tôi cặp số ấy trong 8 trường hợp có thương khác nhau từ 1 đến 8.
Còn 5 trường hợp nữa tôi chưa ghi raTo Learning_Excel : Cứ cho rằng có ký số 0 ở đầu số chia thì còn 2 đáp án nữa;
Nếu không kể các trường hợp này thì vẫn có thể tìm ra 3 nghiệm nữa đó các bạn.
Nhưng đừng mò chứ; BOX lập trình mà!
Rất cảm ơn các bạn đã quan tâm.
Từ 2 đến 8 thôi chứ nhỉ?
Tôi chạy code này thử nhưng tốc độ chậm quá nên không đủ kiên nhẫn đợi. Xin góp vui 1 đoạn code như sau.Những cặp như vầy có thoả đề không bác?
Và sau khi tối ưu 1 chút cho code thì nó thành ra như vầy!57429|06381
58239|06471
75249|08361
95742|10638
95823|10647
97524|10836
PHP:Sub chay() Dim M As String, k As Byte, i As Long, j As Long, x As Byte, d As Byte k = 1 For i = 11106 To 98765 For j = 1234 To 10974 If i / j = 9 Then '[D1] = i M = Format(i, "00000") & Format(j, "00000") For x = 2 To 10 If InStr(x, M, Mid(M, x - 1, 1)) = 0 Then d = 1 Else d = 0 Exit For End If Next If d = 1 Then Cells(k, "A") = i Cells(k, "B") = j k = k + 1 End If End If Next Next End Sub
Thân.
Sub test()
Dim iStart As Long
Dim iFinish As Long
Dim iBigNum As Long
Dim iSmallNum As Long
Dim iResult As Integer
Dim bOK As Boolean
Dim iCheck As Integer
Dim sTemp As String
iStart = 1234 * 9
iFinish = WorksheetFunction.Floor(98765, 9)
For iBigNum = iStart To iFinish Step 9
iSmallNum = iBigNum \ 9
sTemp = Format(iBigNum, "00000") & Format(iSmallNum, "00000")
bOK = True
For iCheck = 2 To 10
If InStr(iCheck, sTemp, Mid(sTemp, iCheck - 1, 1)) > 0 Then
bOK = False
Exit For
End If
Next
If bOK Then
iResult = iResult + 1
Cells(iResult, 1) = iBigNum
Cells(iResult, 2) = iSmallNum
End If
Next
End Sub
Fát huy chiến quả, ta sang tiếp bài 1.1, như sau
ABCDE & FGHI sẽ cho ta thương số trãi dài lần lượt từ 1 đến 8
Biết rằng 9 chữ cái này đại diện cho các số từ 1 đến 9 (không trùng lắp). Bạn tìm giúp tôi cặp số ấy trong 8 trường hợp có thương khác nhau từ 1 đến 8. (Vì 9 ta làm rồi, khà, khà,. . . !)
Cảm ơn các bạn đã quan tâm!
Sub thuonglt()
Dim i As Long, j As Long, x As Long, d As Byte, dl As String, M As String, iCol As Long
dl = "1-2-3-4-5-6-7-8"
Range("A1", Cells(65000, UBound(Split(dl, "-")) + 1)).ClearContents
For i = 0 To UBound(Split(dl, "-"))
Cells(1, i + 1) = Split(dl, "-")(i)
Next
For i = 1234 To 98765
Application.StatusBar = i & " " & WorksheetFunction.Round(((i - 1234) / 97531) * 100, 2) & "%"
For j = 0 To UBound(Split(kiem(i, dl), "-"))
If kiem(i, dl) = "" Then Exit For
iCol = Val(Split(kiem(i, dl), "-")(j))
M = Format(i, "00000") & Format(i / iCol, "00000")
For x = 2 To 10
If InStr(x, M, Mid(M, x - 1, 1)) = 0 Then
d = 1
Else
d = 0
Exit For
End If
Next
If d = 1 Then
Cells(65000, WorksheetFunction.Match(iCol, Range("A1", Cells(1, UBound(Split(dl, "-")) + 1)), 0)).End(xlUp).Offset(1) = i & "-" & i / iCol
Cells(65000, WorksheetFunction.Match(iCol, Range("A1", Cells(1, UBound(Split(dl, "-")) + 1)), 0)).End(xlUp).Select
End If
Next
Next
[A2].Select
End Sub
Function kiem(so As Long, dl As String)
Dim temp As String
For i = 1 To UBound(Split(dl, "-"))
If so Mod Val(Split(dl, "-")(i)) = 0 Then
temp = temp & Split(dl, "-")(i) & " "
End If
Next
kiem = Replace(Trim(temp), " ", "-")
End Function
Option Explicit
[B]Sub chay01()[/B]
Dim M As String, jJ As Byte, Ww As Long, Zz As Long, Ff As Byte, JF As Byte
Dim Timer_ As Double
jJ = 1: Timer_ = Timer
For Ww = 11106 To 98765
1 If Ww \ 9 = Ww / 9 Then
For Zz = 1234 To 10974
2 If Zz \ 9 = Zz / 9 Then
If Ww / Zz = 9 Then
[D1] = Ww
M = Format(Ww, "00000") & Format(Zz, "00000")
For Ff = 2 To 10
If InStr(Ff, M, Mid(M, Ff - 1, 1)) = 0 Then
JF = 1
Else
JF = 0: Exit For
End If
Next
If JF = 1 Then
Cells(jJ, "A") = Ww: Cells(jJ, "B") = Zz
jJ = jJ + 1
End If
End If
21 End If
Next
11 End If
Next
Cells(65500, "D").End(xlUp).Offset(1).Value = Timer - Timer_
[B]End Sub[/B]