Mời các bạn luyện tập nhẹ với bài toán ABCDE / FGHIJ = 9

  • Thread starter Thread starter SA_DQ
  • Ngày gửi Ngày gửi
Liên hệ QC

SA_DQ

/(hông là gì!
Thành viên danh dự
Tham gia
8/6/06
Bài viết
14,576
Được thích
22,897
Nghề nghiệp
U80
Hãy tìm giúp các số mà các chữ cái đang làm đại diện cho nó.
 
hic. em đọc mãi mà vẫn chưa hiểu rõ về code này. bác Po_Pikachu giải thích một ít đi. Cho bọn em còn học hỏi và nâng cao thuật toán tý.
cảm ơn bác nhìu nhìu
Đâu có gì ghê gớm đâu. Bạn chỉ cần phân tích đề 1 chút thì sẽ có hướng làm thôi. Mấy con số 1234 hay 98765 kia thì khoan vội quan tâm đã. Bạn thấy 1 số có 5 chữ số khác nhau thì cứ xem đó như 1 số có 5 chữ số thôi vậy nó phải nằm trong [1000,99999] đúng không?
Giờ đọc tiếp đề thì thấy nó phải khác nhau hoàn toàn. Vậy tìm cách cho các chữ số khác nhau đã.
Mà số thì làm sao biết chúng khác nhau nhỉ? Thử đổi về dạng Text có đầy đủ 5 chữ số thì chắc là có cách nhỉ?
Vậy là có dòng lệnh: M = Format(i, "00000") & Format(j, "00000")
Vậy để quét hết thì cần 1 vòng lập tất cả các chữ số đó: For x = 2 To 10
Rồi cần 1 hàm kiểm tra xem chúng có trùng không? InStr(x, M, Mid(M, x - 1, 1)) = 0

Khi bạn tìm được số không trùng rồi thì đi được nữa bài toán rùi. Tiếp theo thì xem nó có chia hết cho 9 hay không thôi: i/j = 9 hoặc i mod 9 = 0
Giờ ráp tất cả chúng lại.
PHP:
For i = 1000 To 99999
For j = 1000 To 99999
    If i / j = 9 Then
        M = Format(i, "00000") & Format(j, "00000")
        For x = 2 To 10
            If InStr(x, M, Mid(M, x - 1, 1)) = 0 Then
                 ???
            Else
                ???
            End If
        Next
        If ??? Then
            Cells(k, "A") = i
            Cells(k, "B") = j
        End If
    End If
Next
Next
Đại khái là như vậy?
Giờ thêm thắc vào nữa là xong.
Rồi ta thấy các số đó bắt đầu hay kết thúc điều không phải là số trùng lập vậy số không trùng lặp nhỏ nhất và lớn nhất có thể là gì? Có phải là [1234,98765] không? Và chúng phải cách nhau 9 lần vậy khoảng giữa chắc phải là [10974,11106]. Nhưng chúng lại chéo nhau. Nên mình đặt i và j như vậy đó.
Bạn cứ bình tỉnh phân tích hết đề. Càng đọc kỹ hết các yếu tố đề cho thì sẽ thấy cách giải nằm trong đó thôi.
Chúc thành công!
Thân.
 
Upvote 0
Thấy thời gian rút đáng kể; Đó là nhờ các dòng lệnh được đánh số thêm vào:

Mã:
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]

Thời gian theo máy của mình rút từ 77.891 gy còn 9.359 gy Nhờ vào tính chia hết của tử số cũng như mẫu số

Hay đó.
Thử nâng cấp thành em này xem!
PHP:
Sub Thuong9()
Dim M As String, k As Byte, i As Long, j As Long, x As Byte, d As Byte
Dim Timer_ As Double
k = 1:                                  Timer_ = Timer
For i = 1234 To 98765
    If i Mod 9 = 0 Then
        M = Format(i, "00000") & Format(i / 9, "00000")
        d = 0
        For x = 2 To 10
            If InStr(x, M, Mid(M, x - 1, 1)) = 0 Then
                d = d + 1
            Else
                Exit For
            End If
        Next
        If d = 9 Then
            Cells(k, "A") = i
            Cells(k, "B") = i / 9
            k = k + 1
        End If
    End If
Next
Range("E1") = Timer - Timer_
MsgBox (Timer - Timer_)
End Sub

Còn bài 2 thì nâng cấp lên như vầy!
PHP:
Sub thuonglt()
Dim i As Long, j As Long, x As Long, d As Byte, dl As String, M As String, iCol As Long, test As String
Dim Timer_ As Double
dl = "1-2-3-4-5-6-7-8":                                  Timer_ = Timer
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
    test = kiem(i, dl)
    For j = 0 To UBound(Split(test, "-"))
        If test = "" Then Exit For
        iCol = Val(Split(test, "-")(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
        End If
    Next
Next
[A2].Select
MsgBox (Timer - Timer_)
End Sub
PHP:
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

Có cái này cũng vui lắm nè. Thử đổi MsgBox (Timer - Timer_) lại thành MsgBox FormatDateTime(Timer - Timer_) xem sao?
Xem ai là người chạy code lâu nhất nha. Em chạy mất 3 ngày 11:57:32 PM lận đó. hihi :D
 
Lần chỉnh sửa cuối:
Upvote 0
Thử làm tổng quát xem:
- Độ dài chuổi số bất kỳ (<=5)
- Thương số bất kỳ
PHP:
Sub Main(NumLength As Long, qt As Long)
  Dim i As Long, j As Long, Tmp As String, Arr()
  If NumLength > 5 Then Exit Sub
  i = 10 ^ (NumLength - 1)
  Do
    Tmp = i & (i * qt)
    If CheckUnique(Tmp) Then
      ReDim Preserve Arr(j)
      Arr(j) = i * qt & " = " & i & " * " & qt
      j = j + 1
    End If
    i = i + 1
  Loop Until i * qt > 10 ^ NumLength - 1
  If j Then MsgBox Join(Arr, vbLf)
End Sub
PHP:
Function CheckUnique(Num As String) As Boolean
  Dim i As Long, Check As Boolean
  Do
    Check = (Len(Num) - Len(Replace(Num, i, "")) > 1)
    i = i + 1
  Loop Until Check Or i = 10
  CheckUnique = Not Check
End Function
PHP:
Sub Test()
  Main 5, 9
End Sub
Main 5, 9 có nghĩa là tìm các cặp số có độ dài chuổi = 5, có thưong số của phép chia giửa 2 số = 9
Thử nghiệm này cho ra 3 nghiệm
Đã gọi là số có 5 chữ số thì không có cái vụ số 0 nằm ở đầu nha!
 

File đính kèm

Upvote 0
Các cặp số đó có những tính chất sau:

Để có kết quả là 9 thì cả hai số sẽ fải chia hết cho 9;
Nếu thương của cặp số là số chẵn thì số bị chia fải là số chẵn;
Nếu thương là lẽ, thì hai số cũng fải là lẽ.

Ta đưa các tính chất này vô, chắc sẽ giảm hao fí thời gian cho máy!
 
Upvote 0
F=0 cũng là nghiệm chớ anh?
Nếu F = 0 bạn gọi số chia là số có mấy chữ số?
Ec... Ẹc... Rất vô lý, nhưng thích thì chiều:
PHP:
Sub Main(NumLength As Long, qt As Long)
  Dim i As Long, j As Long, Tmp As String, Arr(60000, 1)
  If NumLength > 5 Then Exit Sub
  i = WorksheetFunction.RoundUp((10 ^ (NumLength - 1) / qt), 0)
  Do
    Tmp = i * qt & Format(i, String(NumLength, "0"))
    If CheckUnique(Tmp) Then
      Arr(j, 0) = i * qt
      Arr(j, 1) = i
      j = j + 1
    End If
    i = i + 1 - (((i + 1) Mod 10) = 0)
  Loop Until i * qt > 10 ^ NumLength - 1
  If j Then Range("A1:B1").Resize(j) = Arr
End Sub
PHP:
Function CheckUnique(Num As String) As Boolean
  Dim i As Long, Check As Boolean
  Do
    Check = (Len(Num) - Len(Replace(Num, i, "")) > 1)
    i = i + 1
  Loop Until Check Or i = 10
  CheckUnique = Not Check
End Function
PHP:
Sub Test()
  Main 5, 9
End Sub
---------------
Các cặp số đó có những tính chất sau:

Để có kết quả là 9 thì cả hai số sẽ fải chia hết cho 9;
Nếu thương của cặp số là số chẵn thì số bị chia fải là số chẵn;
Nếu thương là lẽ, thì hai số cũng fải là lẽ.

Ta đưa các tính chất này vô, chắc sẽ giảm hao fí thời gian cho máy!
Bài toán tổng quát thì khỏi cần xét mấy vụ này!
Chỉ quan tâm 1 điểm thôi: Số chia không đựoc tận cùng = 0
---------------
Hãy thử file mới này xem tốc độ thế nào nhé (cùng giải thuật với file đầu tiên)
 

File đính kèm

Upvote 0
Bài 2.0

Cho 1 dãy số gồm 9 số khác nhau hoàn toàn & không có số không (ABCDEFGHI)
Đem số này chia cho số n sẽ fải nhận được 1 số như vậy, chỉ đảo vị trí giữa chúng
Hãy tìm các số ấy, khi n= 2, 4, 5, 7, 8
 
Upvote 0
Cho 1 dãy số gồm 9 số khác nhau hoàn toàn & không có số không (ABCDEFGHI)
Đem số này chia cho số n sẽ fải nhận được 1 số như vậy, chỉ đảo vị trí giữa chúng
Hãy tìm các số ấy, khi n= 2, 4, 5, 7, 8
Chuổi "123456789" qua phép hoán vị ta được 362880 phần tử ---> Cái này em có thể tìm được!
Tuy nhiên để tìm số thỏa mản yêu cầu mà sư phụ đưa ở trên thì... em chẳng tìm thấy số nào cả
PHP:
Dim n As Long, Arr(1 To 362880, 1 To 1)
PHP:
Sub GetString()
  Dim Num As String
  Num = "123456789"
  n = 1
  GetPermu "", Num
  Range("A1").Resize(n - 1) = Arr
End Sub
PHP:
Sub GetPermu(x As String, y As String)
  Dim i As Long, j As Long
  j = Len(y)
  If j < 2 Then
    Arr(n, 1) = x & y
    n = n + 1
  Else
    For i = 1 To j
      GetPermu x & Mid(y, i, 1), Left(y, i - 1) & Right(y, j - i)
    Next
  End If
End Sub
Code trên liệt kê tất cả các phần tử qua phép hoán vị ---> Các bạn tìm thử xem trong số đó có cái nào phù hợp yêu cầu không? (tôi bó tay)
Dùng Excel 2007 nha!
 

File đính kèm

Upvote 0
Chuổi "123456789" qua phép hoán vị ta được 362880 phần tử ---> Cái này em có thể tìm được!
Tuy nhiên để tìm số thỏa mản yêu cầu mà sư phụ đưa ở trên thì... em chẳng tìm thấy số nào cả
PHP:
Dim n As Long, Arr(1 To 362880, 1 To 1)
PHP:
Sub GetString()
  Dim Num As String
  Num = "123456789"
  n = 1
  GetPermu "", Num
  Range("A1").Resize(n - 1) = Arr
End Sub
PHP:
Sub GetPermu(x As String, y As String)
  Dim i As Long, j As Long
  j = Len(y)
  If j < 2 Then
    Arr(n, 1) = x & y
    n = n + 1
  Else
    For i = 1 To j
      GetPermu x & Mid(y, i, 1), Left(y, i - 1) & Right(y, j - i)
    Next
  End If
End Sub
Code trên liệt kê tất cả các phần tử qua phép hoán vị ---> Các bạn tìm thử xem trong số đó có cái nào phù hợp yêu cầu không? (tôi bó tay)
Dùng Excel 2007 nha!
Hay quá, cám ơn ndu, đang tìm cách tạo tổ hợp chập.
Code để được 362880 phần tử hình như dùng phép đệ quy.
Nếu có thể NDU diễn nôm hộ code trên.
 
Upvote 0
Chuổi "123456789" qua phép hoán vị ta được 362880 phần tử ---> Cái này em có thể tìm được!
Tuy nhiên để tìm số thỏa mản yêu cầu mà sư phụ đưa ở trên thì... em chẳng tìm thấy số nào cả
PHP:
Dim n As Long, Arr(1 To 362880, 1 To 1)
PHP:
Sub GetString()
  Dim Num As String
  Num = "123456789"
  n = 1
  GetPermu "", Num
  Range("A1").Resize(n - 1) = Arr
End Sub
PHP:
Sub GetPermu(x As String, y As String)
  Dim i As Long, j As Long
  j = Len(y)
  If j < 2 Then
    Arr(n, 1) = x & y
    n = n + 1
  Else
    For i = 1 To j
      GetPermu x & Mid(y, i, 1), Left(y, i - 1) & Right(y, j - i)
    Next
  End If
End Sub
Code trên liệt kê tất cả các phần tử qua phép hoán vị ---> Các bạn tìm thử xem trong số đó có cái nào phù hợp yêu cầu không? (tôi bó tay)
Dùng Excel 2007 nha!
Với N=8
|A|B
1|987654312|123456789
N=7
|A|B
1|864197523|123456789
2|865749213|123678459
3|867129543|123875649
4|871946523|124563789
5|873526941|124789563
6|893154276|127593468
7|893472615|127638945
8|893542671|127648953
9|927413865|132487695
10|928175346|132596478
11|941687523|134526789
12|946728153|135246879
13|951487236|135926748
14|951634782|135947826
15|953721846|136245978
16|956182374|136597482
17|957312468|136758924
18|958126743|136875249
19|963521874|137645982
20|963824715|137689245
21|964785213|137826459
22|971268543|138752649
23|971568234|138795462
24|972835164|138976452
N=5
|A|B
1|617283945|123456789
2|617284395|123456879
3|617284935|123456987
4|617289345|123457869
5|617293485|123458697
6|617293845|123458769
7|617294835|123458967
8|617298435|123459687
9|617328945|123465789
10|617329485|123465897
11|617342895|123468579
12|617342985|123468597
13|617348925|123469785
14|617349285|123469857
15|617382945|123476589
16|…|…
N=4
|A|B
1|493827156|123456789
2|493827516|123456879
3|495138276|123784569
4|495178632|123794658
5|495182736|123795684
6|495382716|123845679
7|495786312|123946578
8|495827136|123956784
9|497518632|124379658
10|497586312|124396578
11|498271356|124567839
12|498273516|124568379
13|498631572|124657893
14|498631752|124657938
15|498635172|124658793
16|…|…
N=2
|A|B
1|246913578|123456789
2|246913758|123456879
3|246915378|123457689
4|246915738|123457869
5|246917358|123458679
6|246917538|123458769
7|246931578|123465789
8|246931758|123465879
9|246935178|123467589
10|246935718|123467859
11|246937158|123468579
12|246937518|123468759
13|246951378|123475689
14|246951738|123475869
15|246953178|123476589
16|…|…
Với n=2,4,5 thì còn rất nhiều số phù hợp nữa, có thể do thuật toán của tôi chưa tốt nên không đủ kiên nhẫn đợi nó ra hết là bao nhiêu :D
 
Upvote 0
À ha, NDU dính mẹo lão già rồi

Thực ra bài toán đó cần biện luận trước, như sau:
Số nhỏ nhất trong đám là 123456789 (Min) & số lớn nhất không thể khác 987654321 (Max)

Giải trường hợp N=8:


Số lớn nhất có thể để thỏa điều kiện nhân với 8 bé hơn Max sẽ là Int(Max/8)+1. Bằng trang tính excel ta biết số đó là 123456791. Vậy tà từ Min đến số này có hơn 100 số chứ mấy!

Nhưng theo mình, cách giải sẽ ngược lại:

Ta fải tìm số lớn hơn Max gần nhất chia hết cho 8, đó là 987654328 (=FLOOR(987654321,8) + 8)
Tiếp đến ta tìm số nhỏ nhất để làm số bị nhân; Số đó sẽ là =FLOOR(123456789*8,8) :=987654312

Ô là là, vòng lặp của chúng ta giảm đáng kể rồi còn gì!

Nhưng chưa hết; Nếu ta biết rằng chỉ những con số chia hết cho 8 mới là đáp án mà thôi

Vậy là vòng lặp ta có dạng
PHP:
 For Jj = 987654328 To 987654312 Step -8
   . . . . . 
Next Jj

Mình cho rằng đến giờ, cách này là tiết kiệm thời gian nhất.

Xin ý kiến các bạn xa gần.
 
Upvote 0
Thực ra bài toán đó cần biện luận trước, như sau:
Số nhỏ nhất trong đám là 123456789 (Min) & số lớn nhất không thể khác 987654321 (Max)

Giải trường hợp N=8:


Số lớn nhất có thể để thỏa điều kiện nhân với 8 bé hơn Max sẽ là Int(Max/8)+1. Bằng trang tính excel ta biết số đó là 123456791. Vậy tà từ Min đến số này có hơn 100 số chứ mấy!

Nhưng theo mình, cách giải sẽ ngược lại:

Ta fải tìm số lớn hơn Max gần nhất chia hết cho 8, đó là 987654328 (=FLOOR(987654321,8) + 8)
Tiếp đến ta tìm số nhỏ nhất để làm số bị nhân; Số đó sẽ là =FLOOR(123456789*8,8) :=987654312

Ô là là, vòng lặp của chúng ta giảm đáng kể rồi còn gì!

Nhưng chưa hết; Nếu ta biết rằng chỉ những con số chia hết cho 8 mới là đáp án mà thôi

Vậy là vòng lặp ta có dạng
PHP:
 For Jj = 987654328 To 987654312 Step -8
   . . . . . 
Next Jj

Mình cho rằng đến giờ, cách này là tiết kiệm thời gian nhất.

Xin ý kiến các bạn xa gần.
Giải thuật này tôi đã áp dụng cho bài số #17, nhưng ở đây có mấy chỗ tôi thấy chưa hợp lý lắm.
1. Số lớn hơn Max gần nhất chia hết cho N nên thay bằng Số nhỏ hơn Max gần nhất chia hết cho N, vì đương nhiên có bao giờ xét ngoài Max đâu. Cho nên số đó sẽ là FLOOR(987654321,N) thôi, không cần cộng thêm N nữa
2. =FLOOR(123456789*8,8), chỗ này hơi kỳ, đã lấy 1 số nguyên nhân với N rồi còn FLOOR với N nữa làm chi, vì nó có khác gì nhau đâu?
Tuy nhiên, nếu áp dụng thuật toán này cho 8 hay 7 thì không có vấn đề gì, tôi đã tìm được với N=8 có 1 đáp án, N=7 có 24 đáp án. Nhưng nếu với N=5,4,2 thì số lượng phép tính cũng đáng kể vì nó còn thêm cái khoản kiểm tra 9 số không bao gồm số 0 và không trùng nhau nữa. Cho nên nếu áp dụng cho N=5,4,2 tôi thấy có vẻ chưa ổn lắm.
 
Upvote 0
Muội spam tí: đọc không hiểu nhưng vẫn nhẩy vào đọc, đang thắc mắc không biết các Anh như (HaiYen, NDU, Rolller, Pi_kachu...) ngày xưa có phải dân chuyên toán không?
Nếu không phải dân chuyên toán làm sao làm được vậy.
Lạ nhỉ? các bác đi làm rồi mà sao kiến thức toán (thuật toán ) uyên thâm thế? Kính bái phục

Muội học xong, đi làm giờ quên hết cả (mặc dù hồi đi học thuộc diện học giỏi). Hic hic, giờ nghe Bác Thunghi nói Tổ hợp, Đệ Quỵ mới giật mình ...kiến thức đã bay xa
 
Upvote 0
À ha, NDU dính mẹo lão già rồi
Đúng là em bị mắc lừa
Rõ ràng sư phụ nói là;
... chỉ đảo vị trí giữa chúng...
Cái từ "đảo' ở đây em hiểu là: 123 sau khi "đảo" sẽ thành 321... Ai ngờ
Hic... Lý ra sư phụ phải nói "xáo trộn" chứ... Chỉ mỗi từ "đảo" thôi đã làm em.. ói cả ngày nay
Giờ hiểu rồi thì dễ thôi!
Giải thuật của em là:
- Giả sử gọi qt là thương số
- Dùng code tạo list gồm những phần tử đã hoán vị trong chuổi cho trước ("123456789")
- Mỗi khi ra được 1 phần tử, sẽ nhân nó với qt và xét kết quả này xem nó có phải là chuổi được tạo bằng 9 con số trên không (CheckUnique) ---> Nếu có thì ghi vào mảng
code:
PHP:
Dim n As Long, Arr(1 To 362880, 1 To 2) As Long
PHP:
Sub Test()
  Dim Num As String, qt As Long, TG As Double
  TG = Timer
  Range("A:B").ClearContents
  Num = "123456789": qt = Range("G1").Value
  n = 1
  Main "", Num, qt
  If n > 1 Then Range("A1").Resize(n - 1, 2).Value = Arr
  MsgBox Timer - TG
End Sub
PHP:
Sub Main(x As String, y As String, qt As Long)
  Dim i As Long, j As Long, Tmp
  j = Len(y)
  If j < 2 Then
    Tmp = x & y
    If InStr(Tmp * qt, "0") = 0 Then
      If CheckUnique(Tmp * qt) Then
        Arr(n, 1) = Tmp
        Arr(n, 2) = Tmp * qt
        n = n + 1
      End If
    End If
  Else
    For i = 1 To j
      Main x & Mid(y, i, 1), Left(y, i - 1) & Right(y, j - i), qt
    Next
  End If
End Sub
PHP:
Function CheckUnique(Num As String) As Boolean
  Dim i As Long, Check As Boolean
  Do
    Check = (Len(Num) - Len(Replace(Num, i, "")) > 1)
    i = i + 1
  Loop Until Check Or i = 10
  CheckUnique = Not Check
End Function
Code này ra kết quả trong thời gian khoảng 3s
------------------
Để tăng tốc, chỉ cần thêm tí mẹo:
PHP:
Dim n As Long, Arr(1 To 362880, 1 To 2) As Long, ChkTotal As Long
PHP:
Sub Test()
  Dim Num As String, qt As Long, TG As Double
  TG = Timer
  Range("A:B").ClearContents
  Erase Arr
  Num = "123456789": qt = Range("G1").Value
  n = 1: ChkTotal = WorksheetFunction.Fact(Len(Num)) / qt
  Main "", Num, qt
  If n > 1 Then Range("A1").Resize(n - 1, 2).Value = Arr
  MsgBox Timer - TG
End Sub
PHP:
Sub Main(x As String, y As String, qt As Long)
  Dim i As Long, j As Long, Tmp
  j = Len(y)
  If ChkTotal = 0 Then Exit Sub
  If j < 2 Then
    ChkTotal = ChkTotal - 1
    Tmp = x & y
    If InStr(Tmp * qt, "0") = 0 Then
      If CheckUnique(Tmp * qt) Then
        Arr(n, 1) = Tmp
        Arr(n, 2) = Tmp * qt
        n = n + 1
      End If
    End If
  Else
    For i = 1 To j
      Main x & Mid(y, i, 1), Left(y, i - 1) & Right(y, j - i), qt
    Next
  End If
End Sub
3s cho 1 kết quả tính toán đã là nhanh, nhưng code mới này cho kết quả còn thần tốc hơn trước rất nhiều
Ẹc... Ẹc... Hãy tham khảo 2 file đính kèm nhé (file Test_3 nhanh hơn)
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom