Bài Toán Chỉnh Hợp có lặp!

Liên hệ QC

vietnamvn

Thành viên mới
Tham gia
2/10/22
Bài viết
25
Được thích
9
Các số có 4 chữ số khác nhau là ABCD mà tổng các chữ số bằng 9 là A+B+C+D = 9.
Ví dụ: các số có 4 chữ số 6111, 1224...
Có thể thiết kế được hàm Excel với mong muốn đạt được như sau hay không?
- A1: Nhập số lượng các chữ số là một trong các số từ 0 đến 9, ví dụ A1 = 4 là số có số lượng các chữ số là 4
- B1: Nhập tổng của 4 chữ số là một trong các số từ 0 đến 9. Ví như B1 = 9 là số có tổng các chữ số là 9
- C1: Hiện kết quả các số 4 chữ số và tổng các chữ số là 9

Xin được giúp đỡ bài toán này bằng hàm excel.
Xin chân thành cảm ơn các thầy và các bạn!
 
Lần chỉnh sửa cuối:
Các số có 4 chữ số khác nhau là ABCD mà tổng các chữ số bằng 9 là A+B+C+D = 9.
Ví dụ: các số có 4 chữ số 1206, 1026...
Có thể thiết được hàm Excel với mong muốn đạt được như sau hay không?
- A1: Nhập số lượng các chữ số là một trong các số từ 0 đến 9, ví dụ A1 = 4 là số có số lượng các chữ số là 4
- B1: Nhập tổng của 4 chữ số là một trong các số từ 0 đến 9. Ví như B1 = 9 là số có tổng các chữ số là 9
- C1: Hiện kết quả các số 4 chữ số và tổng các chữ số là 9

Xin được giúp đỡ bài toán này bằng hàm excel.
Xin chân thành cảm ơn các thầy và các bạn!
Dùng hàm của Excel không khả thi
 
- Chủ đề em hỏi liên quan đến toán tổ hợp chỉnh hợp. Để nhận được sự giúp đỡ em giải bài toán theo kiến thức thông thường để mong nhận được sự giúp đỡ từ diễn đàn.
- Bài toán:
Cho tập A = 1, 2, 3, 4, 5. Hay lập danh sách các số có 4 chữ số sao cho tổng các chữ số là 9.
- Lý thuyết:
+ Trường hợp 1: Nếu A có 5 phần tử, trong 1 lần sắp xếp yêu cầu phải dùng tất cả các phần có trong A đem đi sắp xếp. Có n phần tử, mà đem n phần tử đó đi sắp xếp thành các số n chữ số khác nhau. Trường hợp này là bài toán Hoán Vị, tức chỉ cần kiểm tra xem có bao nhiêu cách hoán đổi vị trí các phần tử đã cho. Ví dụ: Ở đây có 5 phần tử thì có 5! hay 5*4*3*2*1 = 120 cách sắp xếp. Minh họa: 13245 ; 13254...

+ Trường hợp 2: Nếu A có 5 phần tử mà ta chỉ lấy ra 4 phần tử. Tức là từ tập mẹ A tìm ra các tập con khác nhau từ A. Khi nói đến tập con, nghĩa là các phần tử của tập con đều có trong tập mẹ. Và như vậy không liên quan đến cách xếp hay vị trí gì cả. Mà việc duy nhất là đi nhóm các phần tử lại thành các tập con khác nhau từ tập mẹ đã cho, và đây là bài toán tổ hợp. Ví dụ ,ở đây: n = 5 là số phần tử tập mẹ, k = 4 là số phần tử lấy ra.Thì:
th1.JPG
Minh họa: A1 = {1,2,3,4}; A2 = {1,2,3,5}; A3 = {1,2,4,5}; A4 = {2,3,4,5};A5 = {1,3,4,5}

+ Trường hợp 3: Nếu có 5 phần tử mà lấy ra 4 phần tử, và sau đó từ các phần tử lấy ra có yêu cầu sắp xếp vị trí các phần tử đó thành các số khác nhau. Nhưng không có phần tử nào được lặp lại, nghĩa là chúng khác nhau đôi một. Và chúng ta có bài toán chỉnh hợp. Ví dụ ở đây n = 5 là số phần tử của A, k = 4 là số phần tử lấy ra đem đi sắp xếp và không có phần tử nào được lặp lại thì số cách sắp xếp là:
ch1.JPG
Minh họa, lấy ra 4 phần tử và sắp xếp theo vị trí nhưng không có phần tử nào lặp lại thì có 120 cách như: 1234; 2345,...

+ Trường hợp 4: Tương tự như Trường hơp 3 nhưng ở Trường hợp 4 này yêu cầu tính cả cách xắp xếp có lặp lại. Bài toán sắp xếp phần tử lấy ra từ tập mẹ mà có lặp lại các phần tử. Và đây là một dạng bài chỉnh hợp có lặp. Ví dụ: ở đây n = 5 , k = 4
ch2.JPG
Minh họa chỉnh hợp có lặp hay cách sắp xếp có thể có phần tử được lặp lại: 1234; 1224, 3455...

Như đã trình bài em lập chủ đề này cần hàm giải quyết trường hợp 4 như phần lý thuyết đã nêu ở trên.

Xin chân thành cảm ơn diễn đàn!
Bài đã được tự động gộp:

Dùng hàm của Excel không khả thi
VBA phải không anh. Em chưa biết làm cái đó. Em có giải bằng tay mong mọi người thử nghiệm xem có xây dựng được hàm Excel( hoặc VBA) thuần túy với chủ đề này không.
 
Lần chỉnh sửa cuối:
nói chung xài tạm, cũng ra kết quã vậy @@

trường hợp 4 số !
1668448865430.png
 
bạn tham khảo công thức nha !
công thức cho trường hợp 4 số !
- Công thức anh vượt quá 8192 character excel em không chạy được.
- Trường hợp này phải dùng sao cho nó chạy như anh nói áp dụng được cho trường hợp 4.
- Có lẽ dùng VBA tạo ra danh sách các chữ số từ 1111 đến 5555, sau đó lọc các chữ số thỏa mãn có tổng các chữ số bằng 9. Nhờ các thầy và các ban có thể đông tây y kết hợp với bài này được không ạ. Cái khó là tạo ra được list danh sách các từ 1111 đến 5555
 
Lần chỉnh sửa cuối:
sau khi cải tiến chút thì cũng chạy tạm đc !
do máy mình chạy win 64bit nên công thức dài thoãi mái chạy vẫn đc !^^
 

File đính kèm

Đây file exel em giải. Nhờ các bác hoàn thiện hàm trích lọc theo điều kiệnok.JPG
- Nhờ các bác giúp công thức cột " Các số thỏa mãn" làm các nào khi nhập giá trị là 9 thì nó được danh sách như cột hiện tại mà nó đang có. Tức hàm trích lọc có điệu kiện
 

File đính kèm

Lần chỉnh sửa cuối:
mình thấy file của bạn số 2133, 3312, 2313 thì cũng là 1 bộ số, chỉ là thay đổi vị trí cho nhau thôi mà !
mà danh sách của bạn sao không phải là dải số từ 0009 -> 9000 mà lại từ 1111 -> 5555 nhỉ ? @@
 
mình thấy file của bạn số 2133, 3312, 2313 thì cũng là 1 bộ số, chỉ là thay đổi vị trí cho nhau thôi mà !
mà danh sách của bạn sao không phải là dải số từ 0009 -> 9000 mà lại từ 1111 -> 5555 nhỉ ? @@
- 1 là: 2133, 3312, 2313 là 3 số tư nhiên khác nhau. Có được điều này là do yêu cầu từ đề bài từ các số 1, 2, 3, 4, 5 tạo thành các chữ số có 4 chữ số. Trong đó có tính đến các phần tử không lặp như 1234, 2345 ...và có lặp như 1111, 2223...
Đã là lấy ra và sắp xếp có lặp là toán "chỉnh hợp có lặp". Công nhận toán tổ hợ chỉnh hợ rất dễ nhầm lẫn lúc nào là hoán là chỉnh hay hợp.
- 2 là: 1111 đến 5555 là dãy được tạo bởi 5 số đã cho. Tuy nhiên, trong dãy này vẫn chứa số 0, 6,7,8,9 là các số không có trong tập mẹ của đề bài. Và phải đc loại các số này khi lọc theo điều kiện.
Tất nhiên là 0000 đến 9999 cũng đc, nhưng ta phải tự tay kéo xuống nhiều dòng và loại bỏ nhiều số hơn, trong khi biết trc không dùng đến dải sau 5555(do đề bài)
 
Lần chỉnh sửa cuối:
Hàm bá đạo, KHỦNG, mở ra kín cả màn hình luôn.
Thế thì liệu bài này có cách nào làm dễ hiểu hơn được không nhỉ?
VD:
- 5 số XXXXX,
- tạo bộ 50 số (5 x 0,1,2,3,4,5,6,7,8,9).
- Từ 50 số này, chọn ra các bộ 5 số có tổng = 9.
- Cho random sắp xếp thành XXXXX.
Bài đã được tự động gộp:

- 1 là: 2133, 3312, 2313 là 3 số tư nhiên khác nhau. Có được điều này là do yêu cầu từ đề bài từ các số 1, 2, 3, 4, 5 tạo thành các chữ số có 4 chữ số. Trong đó có tính đến các phần tử không lặp như 1234, 2345 ...và có lặp như 1111, 2223...
Đã là lấy ra và sắp xếp có lặp là toán "chỉnh hợp có lặp". Công nhận toán tổ hợ chỉnh hợ rất dễ nhầm lẫn lúc nào là hoán là chỉnh hay hợp.
- 2 là: 1111 đến 5555 là dãy được tạo bởi 5 số đã cho. Tuy nhiên, trong dãy này vẫn chứa số 0, 6,7,8,9 là các số không có trong tập mẹ của đề bài. Và phải đc loại các số này khi lọc theo điều kiện.
Tất nhiên là 0000 đến 9999 cũng đc, nhưng ta phải tự tay kéo xuống nhiều dòng và loại bỏ nhiều số hơn, trong khi biết trc không dùng đến dải sau 5555(do đề bài)

bạn check lại thử công thức này nha !
 
CSS:
Sub OK_()
   
    Dim o As Integer
    Dim i, j, k, l As Integer
    Dim str, str1 As String
   
    str = ""
    For o = 4 To 20 '---total muc tieu
   
            '----------------4 so
            str1 = ""
           
            For i = 1 To 5
                For j = 1 To 5
                    For k = 1 To 5
                        For l = 1 To 5
                         
                           If (i + j + k + l = o) Then
                              str1 = str1 & i & j & k & l & "_"
                           End If
                         
                        Next l
                    Next k
                Next j
            Next i
            '----------------
            str = str & "if(" & o & "=A1,""" & str1 & ""","""") & " & vbNewLine
    Next o

    '-------------------xuat ket qua
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set FileToCreate = FSO.CreateTextFile("d:\cong thuc.txt")

    FileToCreate.Write str
    FileToCreate.Close
   
    MsgBox Len(str)
   
   
End Sub

e làm 1 đoạn code nho nhỏ là tạo được công thức Excel thui ah !
khó là bạn í muốn trả về các kết quả, công thức trong 1 cell ( cũng có thể hiểu nhầm ý ^^)
 
Excel không phải là công cụ của dân chuyên toán.
VBA lại càng không thân thiện với dân chuyên toán.

Chỉnh hợp, tổ hợp là toán. Tuy toán ứng dụng nhưng căn bản vẫn là toán.
Muốn làm mấy chuyện này thì đi thẳng vào mấy ngôn ngữ hay ứng dụng chuyên toán. Python chẳng hạn.

Ai lại đem xe Landcruiser đi kéo cày.
 
Excel không phải là công cụ của dân chuyên toán.
VBA lại càng không thân thiện với dân chuyên toán.

Chỉnh hợp, tổ hợp là toán. Tuy toán ứng dụng nhưng căn bản vẫn là toán.
Muốn làm mấy chuyện này thì đi thẳng vào mấy ngôn ngữ hay ứng dụng chuyên toán. Python chẳng hạn.

Ai lại đem xe Landcruiser đi kéo cày.
Bác khó tính thật. Bác nói thế thì chủ thớt sẽ bỏ luôn ý định giải bài này và sẽ quên mất mục tiêu ban đầu ngay.
 
Bác khó tính thật. Bác nói thế thì chủ thớt sẽ bỏ luôn ý định giải bài này và sẽ quên mất mục tiêu ban đầu ngay.
Cảm ơn anh nhé!
- Excel làm kiểu bài nhỏ như chủ đề này thì quá phù hợp khi chỉ biết có mỗi Excel. Nhưng nếu kết quả cần nhiều dòng (rows) thì không phù hợp (cơ bản là file rắt nặng).
- Hiện ở bài này đến bài #10 đã đủ lý thuyết thiết kế lại sao cho hoàn chỉnh và tự động cao hơn nếu cần thiết. Ở bài #10 cột "Các số thỏa mãn" nó rơi vào trường hợp trích lọc dữ liệu có điều kiện. Nếu có bác nào có ghé qua giúp cho một hàm gần gần như Filter, tức chỉ cần nhập giá trị 1,2,...9 ở một ô X nào đó thì hàm Excel ra cột như cột "Các số thỏa mãn".

Phần này nói vui thôi:
Em thì xem đá bóng tất nhiên thì thích xem bàn thắng, nhưng thích xem nhất là xem cầu thủ chành chọe nhau (nhưng không được triệt hạ), rồi những pha khán giả chạy vào sân... những tình huống ngoài lề lại thích. Những trận đó dư âm rất lâu mà không phải trận bóng nào cũng có tình huống vậy mà xem.

Em thì thấy chặt chém vừa vừa mà lại gặp đúng thành viên cũng tính nóng như kem nữa thì diễn đàn rất vui.
Thật ra bác ấy đóng vai ác thôi. Mong sao các bác có tuổi được khỏe mạnh, có khen có chê hay chặt chém nhưng cũng không quên giúp hoặc góp ý.
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom