chudoan415
Thành viên mới

- Tham gia
- 16/11/22
- Bài viết
- 49
- Được thích
- 6
- Giới tính
- Nữ
Dạ 1 nghiệm nhỏ nhất, vâng đúng 492 ạ . Anh làm công thức giúp em nhá. Cảm ơn anh!X=492
Trước khi tìm công thức, bạn muốn trả vềnhiều X, hay chỉ 1 giá trị X đầu tiên tìm thấy (Giả sử có nhiều nghiệm)?
Dạ VBA cũng được ạLàm bằng VBA nhé? Hay bắt buộc phải công thức?
Công thức đê, mại zô. mại zô ....Chào anh/chị GPE.
Em có 1 bài toán như sau : Tìm X sao cho , X chia 96, X chia 60 và X chia 32 đều có số dư là 12. Khi X chia 123 thì dư 0. Mong anh/chị giúp bằng công thức excel ạ. Em cảm ơn .
=AGGREGATE(15,6,ROW(108:1000)/(MOD(ROW(108:1000),96)=12)/(MOD(ROW(108:1000),60)=12)
/(MOD(ROW(108:1000),32)=12)/(MOD(ROW(108:1000),123)=0),1)
Cảm ơn anh nhá. Em muốn công thức tổng quát hơn. Bây giờ mình thay đổi số lại phải vào công thức thay số. Em ví dụ thêm tìm X sao cho chia cho 30,25,20 đều dư 15, chia 41 dư 0.Công thức đê, mại zô. mại zô ....
Mã:=AGGREGATE(15,6,ROW(108:1000)/(MOD(ROW(108:1000),96)=12)/(MOD(ROW(108:1000),60)=12) /(MOD(ROW(108:1000),32)=12)/(MOD(ROW(108:1000),123)=0),1)
Thay số bằng địa chỉ ô. Thay giá trị trong ô không thay giá trị trong công thức.Cảm ơn anh nhá. Em muốn công thức tổng quát hơn. Bây giờ mình thay đổi số lại phải vào công thức thay số. Em ví dụ thêm tìm X sao cho chia cho 30,25,20 đều dư 15, chia 41 dư 0.
Ngắn gọn hơn tí:Chào anh/chị GPE.
Em có 1 bài toán như sau : Tìm X sao cho , X chia 96, X chia 60 và X chia 32 đều có số dư là 12. Khi X chia 123 thì dư 0. Mong anh/chị giúp bằng công thức excel ạ. Em cảm ơn .
=LCM(LCM(C3,C4,C5)+E3,C6)
=timso(C3,C4,C5,E3,C6,E6)
Option Explicit
Function timso(soA1 As Long, soA2 As Long, soA3 As Long, duA As Long, soB As Long, duB As Long)
Dim i&, bschung As Double, du As Double, t
t = Timer
Do
i = i + 1
bschung = soB * i - duB - duA
du = bschung / soA1
If du = Int(du) Then
du = bschung / soA2
If du = Int(du) Then
du = bschung / soA3
If du = Int(du) Then
timso = bschung + duA + duB
Exit Function
End If
End If
End If
Loop Until i > 10000000
timso = "Tim hoai khong thay!"
End Function
[/code]
Công thức đúng ạ. nhưng em quên không ghi thêm điều kiện tìm X số nhỏ nhất. Nên trường hợp công thức của anh với 3 số chia 30,25,20 dư 15 và chia 41 dư 0 thì X = 12915 , nhưng số bé nhất tìm được X=615Ngắn gọn hơn tí:
Mã:=LCM(LCM(C3,C4,C5)+E3,C6)
LCM = Least Common Multiple = Bội số chung nhỏ nhất.Ngắn gọn hơn tí:
Có phải số thứ 2 (41) luôn luôn dư 0 không?Công thức đúng ạ. nhưng em quên không ghi thêm điều kiện tìm X số nhỏ nhất. Nên trường hợp công thức của anh với 3 số chia 30,25,20 dư 15 và chia 41 dư 0 thì X = 12915 , nhưng số bé nhất tìm được X=615
Thấy sao sao mà không biết sao???LCM = Least Common Multipe
Là sao thì cứ hỏi "tại sao" sẽ biết sao.Thấy sao sao mà không biết sao???
Vì duB = 0 nên trước khi vô vòng lặp ta ấn định i=122; Như vậy đỡ hao chút điện!Dùng UDF nhé.
Cú pháp:
=timso(soA1,soA2,soA3,duA,soB,duB)
Với soA1,soA1,soA2 (96,60,32) là các ô của nhóm có cùng số dư (duA=12)
soB (123) là ô có số dư (duB=0)
Trong sheet, tại ô bất kỳ nhập:
=TimSo(C3,C4,C5,E3,C6,E6)
Là cái chữ "M" trong "LCM": dịch ra nó sao sao ấy sư phụ.Là sao thì cứ hỏi "tại sao" sẽ biết sao.
LCM tính 1 lần thì đúng, cộng với 1 số xong tính thêm lần 2 thì về logic toán sẽ "sai sai". Bài toán này phải đưa về dạng giải hệ 4 phương trình
Số 123 dư 0 : chưa chắc dư 0 là cố định đâu sư phụ. Phải dự phòng cả có số dư >0 nữa ạ.Vì duB = 0 nên trước khi vô vòng lặp ta ấn định i=122; Như vậy đỡ hao chút điện!
Bạn thử công thức :Chào anh/chị GPE.
Em có 1 bài toán như sau : Tìm X sao cho , X chia 96, X chia 60 và X chia 32 đều có số dư là 12. Khi X chia 123 thì dư 0. Mong anh/chị giúp bằng công thức excel ạ. Em cảm ơn .
Tuyệt vời anh zai, cảm ơn anh nhá.Bạn thử công thức :
B6=IF(MOD(LCM(C3:C5)+E3,C6)>0,LCM(C3:C5)*2+E3,LCM(C3:C5)+E3)
Mình chưa nghĩ là tuyệt vời đâuTuyệt vời anh zai, cảm ơn anh nhá.
Em chưa kiểm tra được hết được các trường hợp khác. Thấy 1 số trường hợp đúng rồi ạ. Để tối nay em kiểm tra thêm các trường khác nữa xem công thức còn đúng không. Cảm ơn các anh giúp đỡ nhiệt tình ạ.Mình chưa nghĩ là tuyệt vời đâu
Bội chung nhỏ nhất của 3 số đầu nhân đôi cộng số dư chưa nói lên điều gì về chia hết cho số cuối cùngEm chưa kiểm tra được hết được các trường hợp khác. Thấy 1 số trường hợp đúng rồi ạ. Để tối nay em kiểm tra thêm các trường khác nữa xem công thức còn đúng không. Cảm ơn các anh giúp đỡ nhiệt tình ạ.
Về mặt toán học thì như thế này:Bội chung nhỏ nhất của 3 số đầu nhân đôi cộng số dư chưa nói lên điều gì về chia hết cho số cuối cùng
Cập nhật công thức của anh @Phuocam và VBA của anh @bebo021999Mình thay vào thử thì thế này.
Công thức của @Phuocam thì mình chưa thử, bị sót mất.
Function SoTim(A96 As Integer, A60 As Integer, A32 As Integer, SoDuA As Integer, _
S123 As Integer, Optional SoDu2 As Integer = 0) As Integer
Dim W As Long, Tmp1 As Long, Tmp2 As Long, Tmp3 As Integer, Tmr As Double, Dm As Integer
W = S123 - 1
Do
W = W + 1: If W > 65500 Then Exit Do
If (W - SoDu2) / S123 = (W - SoDu2) \ S123 Then
If (W - SoDuA) \ A96 = (W - SoDuA) / A96 Then
If (W - SoDuA) \ A60 = (W - SoDuA) / A60 Then
If (W - SoDuA) \ A32 = (W - SoDuA) / A32 Then
SoTim = W: Exit Function
End If
End If
End If
End If
Loop
End Function
Thiếu 1 chữ lờ. Là thiếu 1 chữ lờ.Là cái chữ "M" trong "LCM": dịch ra nó sao sao ấy sư phụ.
Của bác = 0 nên có vẻ không hợp lý bác ạ.PHP:Function SoTim(A96 As Integer, A60 As Integer, A32 As Integer, SoDuA As Integer, _ S123 As Integer, Optional SoDu2 As Integer = 0) As Integer Dim W As Long, Tmp1 As Long, Tmp2 As Long, Tmp3 As Integer, Tmr As Double, Dm As Integer W = S123 - 1 Do W = W + 1: If W > 65500 Then Exit Do If (W - SoDu2) / S123 = (W - SoDu2) \ S123 Then If (W - SoDuA) \ A96 = (W - SoDuA) / A96 Then If (W - SoDuA) \ A60 = (W - SoDuA) / A60 Then If (W - SoDuA) \ A32 = (W - SoDuA) / A32 Then SoTim = W: Exit Function End If End If End If End If Loop End Function
Vâng, đúng thế thật. Thay đổi cứ như bảng xếp hạng bóng đá ấy.Cú pháp =SoTim(96,60,32,12,123,3) => Đáp án là 5292
Còn =SoTim(96,60,32,12,123) => 492
Function MyLCM(a As Long, b As Long, c As Long, d As Long, x As Long, y As Long)
Dim Tmp As Long, Tmp2 As Long, i As Long
Tmp = Application.Lcm(a, b, c)
Const MaxX = 10 ^ 8
Do While Tmp2 < MaxX
i = i + 1
Tmp2 = i * Tmp + x
If Tmp2 Mod d = y Then
MyLCM = Tmp2
Exit Function
End If
Loop
If Tmp2 > MaxX Then MyLCM = "#Value > " & MaxX
End Function
Vâng, em chép hết vào 1 file, tăng giá trị khống chế cận trên. Máy yếu chạy không nổi luôn, phải treo 1 lúc.Nếu dùng code VBA thì cứ tận dụng hàm lờ cờ mờ cho gọn, code chi mà 3, 4, 5 cái If rồi / rồi \ púa xua.
PHP:Function MyLCM(a As Long, b As Long, c As Long, d As Long, x As Long, y As Long) Dim Tmp As Long, Tmp2 As Long, i As Long Tmp = Application.Lcm(a, b, c) Const MaxX = 10 ^ 8 Do While Tmp2 < MaxX i = i + 1 Tmp2 = i * Tmp + x If Tmp2 Mod d = y Then MyLCM = Tmp2 Exit Function End If Loop If Tmp2 > MaxX Then MyLCM = "#Value > " & MaxX End Function
View attachment 283894
Function TimSo(A96 As Long, B60 As Long, C32 As Long, D123 As Long, X12 As Long, Y0 As Long)
Dim Tmp As Long, W As Long, J As Long
For J = D123 + Y0 To (10) ^ 8 Step D123
If (J - X12) / A96 = (J - X12) \ A96 Then
If (J - X12) / B60 = (J - X12) \ B60 Then
If (J - X12) / C32 = (J - X12) \ C32 Then
TimSo = J: Exit Function
End If
End If
End If
Next J
End Function
Function FindNum(A96 As Long, B60 As Long, C32 As Long, D123 As Long, Du1 As Long, Du2 As Long)
Dim DK1 As Boolean, DK2 As Boolean, DK3 As Boolean, J As LongLong
For J = D123 + Du2 To (10) ^ 8 Step D123
DK1 = (J - Du1) / A96 = (J - Du1) \ A96
DK2 = (J - Du1) / B60 = (J - Du1) \ B60
DK3 = (J - Du1) / C32 = (J - Du1) \ C32
If DK1 And DK2 And DK3 Then
FindNum = J: Exit Function
End If
Next J
End Function
Thử công thức nàyCông thức đúng ạ. nhưng em quên không ghi thêm điều kiện tìm X số nhỏ nhất. Nên trường hợp công thức của anh với 3 số chia 30,25,20 dư 15 và chia 41 dư 0 thì X = 12915 , nhưng số bé nhất tìm được X=615
Em thấy các trường hợp thay số khác vào công thức của anh rất đúng. Đây là những bài tập liên quan Bộ số chung nhỏ nhất lớp 6. Em sẽ lấy toán nâng cao lớp 6 của đứa cháu ra kiểm tra thêm ạ.Thử công thức này
=AGGREGATE(15, 6, (LCM(C3,C4,C5)* ROW(1:1000)+E3)/(MOD( LCM(C3,C4,C5)*ROW( 1:1000)+E3,C6)=E6), 1)
Nếu toán lớp 6 thì tăng cận trên làm gì, không giảm thì thôi chứ. 10 ^ 8 là 100 triệu, giảm còn chừng 10 ^ 6 là vừa với lớp 6.Vâng, em chép hết vào 1 file, tăng giá trị khống chế cận trên. Máy yếu chạy không nổi luôn, phải treo 1 lúc.
Dạ vâng đúng rồi ạ. Toán lớp 6 chỉ tìm số nhỏ nhất thôi ạ Em ví dụ: tìm X sao cho chia 52,46,30 đều dư 12, chia 24 dư 0. X = 17952 hoặc 53832 hoặc 89712 .... Học sinh lớp 6 chỉ tìm X = 17952 là đủ rồi ạ.Nếu toán lớp 6 thì tăng cận trên làm gì, không giảm thì thôi chứ. 10 ^ 8 là 100 triệu, giảm còn chừng 10 ^ 6 là vừa với lớp 6.
Em đã thử các trường hợp , công thức của anh đều lấy nghiệm nhỏ nhất.Thử công thức này
=AGGREGATE(15, 6, (LCM(C3,C4,C5)* ROW(1:1000)+E3)/(MOD( LCM(C3,C4,C5)*ROW( 1:1000)+E3,C6)=E6), 1)
Z là số cần tìmNếu toán lớp 6 thì tăng cận trên làm gì, không giảm thì thôi chứ. 10 ^ 8 là 100 triệu, giảm còn chừng 10 ^ 6 là vừa với lớp 6.
=MATCH(E6,MOD(LCM(C3:C5)*ROW(INDIRECT("1:"&C6))+E3,C6),)*LCM(C3:C5)+E3
Function TimSo(a As Long, b As Long, c As Long, d As Long, x As Long, y As Long)
Dim BSCabc As Long, i As Long
BSCabc = Application.LCM(a, b, c)
For i = 0 To d - 1
lTmp = BSCabc * i + x
If lTmp Mod d = y Then
TimSo = lTmp
Exit Function
End If
Next
TimSo = "V" & ChrW(244) & " nghi" & ChrW(234) & ChrW(803) & "m"
End Function
So với code bài #32 thì cùng lý luận logic, khi có nghiệm thì thuật toán y hệt nhau, khi vô nghiệm thì code #40 giới hạn số lần lặp.Đặt A = Bội số chung nhỏ nhất của a, b, c
Chỉ cần xét đến số A*(d - 1) + x là đủ
Kết quả bằng 0 chứ không phải vô nghiệm nha anh. Kết quả bằng 0 hoàn toàn phù hợp với yêu cầu của đề bài.Nếu cả 4 số là số nguyên tố, và x = 0, lẽ ra bằng a * b * c * d thì lại vô nghiệm.
=(MATCH(E6,MOD(LCM(C3:C5)*(ROW(INDIRECT("1:"&C6))-1)+E3,C6),)-1)*LCM(C3:C5)+E3
Sao kết quả không thể là 0 anh? 0 chia hết cho tất cả các số, hoàn toàn thỏa mãn điều kiện của đề bài.Ý tôi nói trường hợp x = 0
Trường hợp này lẽ ra là 72
View attachment 283910
Trường hợp này lẽ ra là 46189
View attachment 283911
Nếu For i = 1 to d -1 lại là vô nghiệm, ráng 1 vòng lặp i = d thì sẽ có nghiệm.
View attachment 283912
Tất nhiên là vậy. Nhưng ... nó sao sao áSao kết quả không thể là 0 anh? 0 chia hết cho tất cả các số, hoàn toàn thỏa mãn điều kiện của đề bài.
6 đáp án 'bé nhất'>0 | 3 | 6 | 9 | 12 | 15 | |||||||||||||||||
492 | 164 | 82 | 54.66667 | 41 | 32.8 | |||||||||||||||||
20,172 | 6724 | 3362 | 2241.333 | 1681 | 1344.8 | |||||||||||||||||
39,852 | 13284 | 6642 | 4428 | 3321 | 2656.8 | |||||||||||||||||
59,532 | 19844 | 9922 | 6614.667 | 4961 | 3968.8 | |||||||||||||||||
79,212 | 26404 | 13202 | 8801.333 | 6601 | 5280.8 | |||||||||||||||||
98,892 | 32964 | 16482 | 10988 | 8241 | 6592.8 |