Tìm số tự nhiên bé nhất có tổng các chữ số bằng 39 (1 người xem)

Người dùng đang xem chủ đề này

Cá ngừ F1

( ͡° ͜ʖ ͡°)
Thành viên BQT
Moderator
Tham gia
1/1/08
Bài viết
2,580
Được thích
3,723
Donate (Momo)
Donate
Giới tính
Nam
Nghề nghiệp
Quan hệ.. và quan hệ..
Gửi các anh/chị,
Hôm qua, em có gặp bài toán này của cháu bé lớp 4 như tên tiêu đề.
Quả thật là cũng chưa nghĩ ra thuật toán như: số này sẽ bắt đầu bằng số nào? số này sẽ phải có bao nhiêu chữ số? để đảm bảo yêu cầu đề bài.
Như bài này em làm mò như sau: 39 = 9*4 + 3, vậy sẽ bắt đầu bằng số 3, kết quả 39999, cũng chưa biết có đúng cho bài toán khác không?
Em đăng lên đây, mong các thành viên hỗ trợ xây dựng thuật toán và hàm tự tạo để giải bài toán này.
Em cảm ơn.
 
Gửi các anh/chị,
Hôm qua, em có gặp bài toán này của cháu bé lớp 4 như tên tiêu đề.
Quả thật là cũng chưa nghĩ ra thuật toán như: số này sẽ bắt đầu bằng số nào? số này sẽ phải có bao nhiêu chữ số? để đảm bảo yêu cầu đề bài.
Như bài này em làm mò như sau: 39 = 9*4 + 3, vậy sẽ bắt đầu bằng số 3, kết quả 39999, cũng chưa biết có đúng cho bài toán khác không?
Em đăng lên đây, mong các thành viên hỗ trợ xây dựng thuật toán và hàm tự tạo để giải bài toán này.
Em cảm ơn.
Theo em thấy số tự nhiên bé nhất thì phải là số có số chữ số ít nhất, số tự nhiên có số chữ số ít nhất mà tổng bằng 1 số thì các chữ số phải là lớn nhất. Vậy giả sử n là số tổng, thì lấy n/9 được số nguyên (k) và dư m thì khi đó số tự nhiên bé nhất có tổng bằng n là:
m9{k} (tức m đứng trước và kèm theo sau số 9 lặp k lần)
 
Gửi các anh/chị,
Hôm qua, em có gặp bài toán này của cháu bé lớp 4 như tên tiêu đề.
Quả thật là cũng chưa nghĩ ra thuật toán như: số này sẽ bắt đầu bằng số nào? số này sẽ phải có bao nhiêu chữ số? để đảm bảo yêu cầu đề bài.
Như bài này em làm mò như sau: 39 = 9*4 + 3, vậy sẽ bắt đầu bằng số 3, kết quả 39999, cũng chưa biết có đúng cho bài toán khác không?
Em đăng lên đây, mong các thành viên hỗ trợ xây dựng thuật toán và hàm tự tạo để giải bài toán này.
Em cảm ơn.
Tôi nghĩ hướng giải quyết này là đúng, thử công thức sau:

=(MOD(A1,9)&REPT(9,INT(A1/9)))+0

.
 
Gửi các anh/chị,
Hôm qua, em có gặp bài toán này của cháu bé lớp 4 như tên tiêu đề.
Quả thật là cũng chưa nghĩ ra thuật toán như: số này sẽ bắt đầu bằng số nào? số này sẽ phải có bao nhiêu chữ số? để đảm bảo yêu cầu đề bài.
Như bài này em làm mò như sau: 39 = 9*4 + 3, vậy sẽ bắt đầu bằng số 3, kết quả 39999, cũng chưa biết có đúng cho bài toán khác không?
Em đăng lên đây, mong các thành viên hỗ trợ xây dựng thuật toán và hàm tự tạo để giải bài toán này.
Em cảm ơn.
Theo tôi, nghĩ như vậy là đúng rồi.
 
Không biết viết như vầy có đúng không?
Rich (BB code):
Function SmallX(Num As Long)
    Dim N1&, N2, i&
    If Num < 0 Then MsgBox "So khong duoc nho hon khong!": Exit Function
    If Num > 135 Then MsgBox "So phai nho hon 136!": Exit Function
    N1 = Num Mod 9
    If N1 = 0 Then N1 = 9
    N1 = Num / 9
    N2 = Num Mod 9
    For i = 1 To N1
        N2 = N2 & 9
    Next
    SmallX = N2
End Function
 
Gửi các anh/chị,
Hôm qua, em có gặp bài toán này của cháu bé lớp 4 như tên tiêu đề.
Quả thật là cũng chưa nghĩ ra thuật toán như: số này sẽ bắt đầu bằng số nào? số này sẽ phải có bao nhiêu chữ số? để đảm bảo yêu cầu đề bài.
Như bài này em làm mò như sau: 39 = 9*4 + 3, vậy sẽ bắt đầu bằng số 3, kết quả 39999, cũng chưa biết có đúng cho bài toán khác không?
Em đăng lên đây, mong các thành viên hỗ trợ xây dựng thuật toán và hàm tự tạo để giải bài toán này.
Em cảm ơn.
Dùng thử solver cho đỡ mệt óc :D

---
Tải lại file sửa công thức
 

File đính kèm

Lần chỉnh sửa cuối:
Công thức Excel 365: đặt name là xxx, refer to = lambda(x,if(x<10,x,xxx(x-9) & 9))
 
Dùng thử solver cho đỡ mệt óc :D
Cảm ơn anh, Solver không thấy mệt, nhưng em cũng chưa biết chút nào về cái Solver này luôn.
Mà với tổng bằng 134 thì Solver đang sai?

TB: một bài toán tìm số bé nhất, mà sao cho các cháu số to thế không biết?

Snag_57bdc689.png
 
Cảm ơn anh, Solver không thấy mệt, nhưng em cũng chưa biết chút nào về cái Solver này luôn.
Mà với tổng bằng 134 thì Solver đang sai?

TB: một bài toán tìm số bé nhất, mà sao cho các cháu số to thế không biết?

View attachment 267219
Công thức bị nhân thừa 1 lần 10, bạn tải lại file bài trên test lại xem sao.

Nếu số quá lớn, có thể chèn thêm dòng vào giữa vùng điều kiện & copy công thức vào các ô mới chèn trước khi chạy.
 
Tôi không biết lớp 4 giải thế nào, nhưng khi nào họp phụ huynh tôi sẽ hỏi cô giáo. Lớp 4 học lâu rồi nên không nhớ.

Nếu là tôi thì tôi sẽ giải như sau.

Nếu tổng a < 10 thì kết quả là số có 1 chữ số đúng bằng a.
Nếu a > 9 thì kết quả có ít nhất là 2 chữ số. Kết quả phải có chữ số đơn vị là 9. Thật thế giả sử kết quả = <a1...an>b với b < 9.
an không thể = 0 bởi nếu thế ta loại số an và được kết quả = <a1...a(n-1)>b nhỏ hơn do có số chữ số nhỏ hơn mà tổng các chữ số vẫn bằng a. Vậy kết quả = <a1...(an-1)>(b+1) < <a1...an>b, trái với giả thiết <a1...an>b là số nhỏ nhất có tổng các chữ số bằng a.

Vậy số <a1...an> có tổng các chữ số = a-9. Tương tự như trên số nhỏ nhất khi an = 9.

Tóm lại số nhỏ nhất có tổng các chữ số bằng a là số có tất cả các chữ số, ngoại trừ chữ số đầu tiên, đều bằng 9.

Tổng các chữ số = 39 thì số nhỏ nhất có 4 chữ số cuối là 9 và chữ số đầu bằng 3, tức 39999
 
Không biết viết như vầy có đúng không?
Rich (BB code):
Function SmallX(Num As Long)
    Dim N1&, N2, i&
    If Num < 0 Then MsgBox "So khong duoc nho hon khong!": Exit Function
    If Num > 135 Then MsgBox "So phai nho hon 136!": Exit Function
    N1 = Num Mod 9
    If N1 = 0 Then N1 = 9
    N1 = Num / 9
    N2 = Num Mod 9
    For i = 1 To N1
        N2 = N2 & 9
    Next
    SmallX = N2
End Function
Thuật toán này luộm thuộm lắm.
VBA vốn thuộc dòng ngôn ngữ có nhiều hàm làm việc với string. Dùng hàm String code rất gọn.
(dạng hàm sẽ gần như in hệt với công thức bài #3)

Function SoGiDo(ByVal ts As Long) As Long
SoGiDo = (ts Mod 9) & String(ts \ 9, "9")
End Function

1633438254628.png
 
Thuật toán này luộm thuộm lắm.
VBA vốn thuộc dòng ngôn ngữ có nhiều hàm làm việc với string. Dùng hàm String code rất gọn.
(dạng hàm sẽ gần như in hệt với công thức bài #3)

Function SoGiDo(ByVal ts As Long) As Long
SoGiDo = (ts Mod 9) & String(ts \ 9, "9")
End Function

View attachment 267235
Hàm này của anh rất ngắn và nhanh, tuy nhiên đến 83 là lỗi luôn anh ạ

Snag_3a0eda.png
 
Hàm này của anh rất ngắn và nhanh, tuy nhiên đến 83 là lỗi luôn anh ạ
...
Bạn cũng thừa biết trên 2 tỷ là quá giới hạn của Long
Sửa lại cho hàm trả về Double thì sẽ vượt qua được ngưỡng này. Tuy nhiên cũng còn cửa 15 chữ số.
Chỉ có để hàm mặc định trả về Variant->String mới dài được.
 
Không biết viết như vầy có đúng không?
Rich (BB code):
Function SmallX(Num As Long)
    Dim N1&, N2, i&
    If Num < 0 Then MsgBox "So khong duoc nho hon khong!": Exit Function
    If Num > 135 Then MsgBox "So phai nho hon 136!": Exit Function
    N1 = Num Mod 9
    If N1 = 0 Then N1 = 9
    N1 = Num / 9
    N2 = Num Mod 9
    For i = 1 To N1
        N2 = N2 & 9
    Next
    SmallX = N2
End Function
Hàm này của anh @Maika8008 nếu tổng các chữ số bằng 5 đến 9 đang không chính xác.
Nếu tổng dạng x5 đến x9 đang sai.

Snag_5f5f48.png
 
Hàm Lambda dùng trong bài trên là hàm đệ quy, nếu viết bằng VBA sẽ là:
PHP:
Function Sogithe(Total As Long)
If Total < 10 Then
    Sogithe = Total
Else
    Sogithe = Sogithe(Total - 9) * 10 + 9
End If
End Function
 
Nếu là VBA thì
Mã:
Function Sogithe(Total As Long) As Long
    If Total < 10 Then
        Sogithe = Total
    Else
        Sogithe = (Total Mod 9) & String(Total \ 9, "9")
    End If
End Function

hoặc

Function Sogithe(Total As Long) As String
    If Total < 10 Then
        Sogithe = Total
    Else
        Sogithe = (Total Mod 9) & String(Total \ 9, "9")
    End If
End Function
 
Lần chỉnh sửa cuối:
Hàm này của anh @Maika8008 nếu tổng các chữ số bằng 5 đến 9 đang không chính xác.
Nếu tổng dạng x5 đến x9 đang sai.

View attachment 267244
Chắc phải sửa lại thế này:
Rich (BB code):
Function SmallX(Num As Long) As Double
    Dim N1&, N2, i&
    If Num < 0 Then MsgBox "So khong duoc nho hon khong!": Exit Function
    If Num > 135 Then MsgBox "So phai nho hon 136!": Exit Function
    N1 = Int(Num / 9)
    N2 = Num Mod 9
    For i = 1 To N1
        N2 = N2 & 9
    Next
    SmallX = N2
End Function
 
Tôi mới nhớ ra một thuật toán không cần dùng đến chuỗi. Dựa trên nguyên tắc số 9 lặp lại n lần là số 10 luỹ thừa n lần trừ đi 1.
Đương nhiên vì giới hạn của máy tính, thuật toán không dùng chuỗi chỉ áp dụng được cho số dưới 16 ký tự.

Function SoDom(ByVal ts As Long) As Double
SoDom = ((ts Mod 9) + 1)*10^(ts \ 9) - 1
End Function
 
Topic sôi động quá.
Bài toán lớp 4 của anh Cá Ngừ lại thành ra chỗ quy tụ anh tài.
Ngọa hổ tàng long :D
 
Bạn ấy thích long, thôi thì "Quần Long Tụ Hội " vậy
Long Tranh Hổ Đấu. Long Hổ Phong Vân. (Long Đàm Hổ Huyệt thì giống Ngoạ Hổ Tàng Long, không hợp)

Nếu chỉ thích "long" thì có Long Đong.
Hay bạn ấy ngụ ý "... Gái không chồing như phản gỗ long đanh, Phản gỗ long đanh anh còn chữa được..."
(chỉ nên hiểu ý từ "long" thôi, đừng nghĩ đến từ "chữa")
 
Tất cả các công thức đều hay, em cảm ơn tất cả.
Từ các công thức em cũng dậy được cho cháu mẹo để giải bài này.

Chúc mọi người cuối tuần vui vẻ và an lành !!!
 
Tất cả các công thức đều hay, em cảm ơn tất cả.
Từ các công thức em cũng dậy được cho cháu mẹo để giải bài này.

Chúc mọi người cuối tuần vui vẻ và an lành !!!
Phải công nhận bi giờ con nít học toán cao quá.
Hồi lớp 4 (thời tôi gọi là lớp Nhì) tôi chỉ mới học xong quy tắc tam xuất, và các bài toán về công thức hình học. Lên lớp Nhất mới rớ đến các bài toán động tử.
Toán số - loại toán học về tính chất của số và chữ số - đến lớp 10 (tôi gọi là Đệ Tam) mới học.
 
Phải công nhận bi giờ con nít học toán cao quá.
Hồi lớp 4 (thời tôi gọi là lớp Nhì) tôi chỉ mới học xong quy tắc tam xuất, và các bài toán về công thức hình học. Lên lớp Nhất mới rớ đến các bài toán động tử.
Toán số - loại toán học về tính chất của số và chữ số - đến lớp 10 (tôi gọi là Đệ Tam) mới học.
Sau 1975, may mắn là có được khoảng 15 năm chưa loạn giáo dục, tụi tôi vẫn còn được học nhẹ nhàng gần như trước. Chương trình học nhẹ nhưng chấm điểm rất mắc. Tôi thuộc loại nhất lớp mà toán có bao giờ điểm trung bình được 9,0 đâu, văn thì cỡ 6.5.

Còn bây chừ cấp 1 tụi nó học gì mà như cấp 2. Cấp 2 thì học như cấp 3, còn cấp 3 học như nghiên cứu làm luận văn thạc sĩ. Điểm thì chót vót 9.7, 9.9, điểm 10,0 tròn không ít.
 
Phải công nhận bi giờ con nít học toán cao quá.
Hồi lớp 4 (thời tôi gọi là lớp Nhì) tôi chỉ mới học xong quy tắc tam xuất, và các bài toán về công thức hình học. Lên lớp Nhất mới rớ đến các bài toán động tử.
Toán số - loại toán học về tính chất của số và chữ số - đến lớp 10 (tôi gọi là Đệ Tam) mới học.
Vâng anh, lúc đầu em đọc đề bài cũng choáng. Chưa biết phải làm thế nào.
Giờ lớp 3, 4 đã học giải phương trình bậc nhất rồi. Như em trước lớp 7, 8 mới biết phương trình bậc nhất. Đến cấp 3 mới làm phương trình bậc 2.
 
. . . . . . Còn bây chừ cấp 1 tụi nó học gì mà như cấp 2. Cấp 2 thì học như cấp 3, còn cấp 3 học như nghiên cứu làm luận văn thạc sĩ. Điểm thì chót vót 9.7, 9.9, điểm 10,0 tròn không ít.
Cũng phải thôi, kiến thức nhân loại càng nhiều thì càng phải tiếp thu nhiều;
Nhưng từ khi bỏ khối này khối kia rồi (có khi gọi là ban hay sao ý), thì càng ngày càng phải đưa kiến thức xuống cấp thấp hơn
Theo cái kiểu như không đưa ngang được thì đưa theo chiều dọc í!
Bây chừ 3 hay 4 tuổi đã chơi trò chơi điện tử rồi, vô cấp I là phải học online rồi,. . . .

Chúc các bạn vui khỏe!
 

File đính kèm

  • 10-05.jpg
    10-05.jpg
    65.5 KB · Đọc: 2
Cũng phải thôi, kiến thức nhân loại càng nhiều thì càng phải tiếp thu nhiều;
Nhưng từ khi bỏ khối này khối kia rồi (có khi gọi là ban hay sao ý), thì càng ngày càng phải đưa kiến thức xuống cấp thấp hơn
Theo cái kiểu như không đưa ngang được thì đưa theo chiều dọc í!
Bây chừ 3 hay 4 tuổi đã chơi trò chơi điện tử rồi, vô cấp I là phải học online rồi,. . . .

Chúc các bạn vui khỏe!
Hồi xưa chương trình nhẹ, người ta đã phân ban rồi. Mục đích để phát huy sở trường, tránh việc học nhiều kiến thức thiếu thiết thực đối với cá nhân. Nay cũng phải quay trở lại cách làm như vậy.
 
Lần chỉnh sửa cuối:
Mình không trong ngành GD, nhưng có thân thiết đến GD & :
Từ bỏ chuyện phân ban theo mình là đi ngược dòng chảy nhân loại (Các bác trong ngành GD cứ mạnh dạn ném đá nha, mình xin!)
Mình ủng hộ phân ban vì có vậy mới dễ thực hiên lời ông bà xưa: "1 nghề cho chín hơn 9 mười nghề."
Mà muốn chuyên sâu thì phải dành thời gian biểu thôi & xóa bỏ cào bằng kiến thức
Thêm nữa từ khi có internet thì chuyện tự học hay tự đi lượm kiến thức nhân loại càng dễ thêm lên.
Về lâu về dài mới có những chuyên 'da' đầu ngành; còn chương trình GD của chúng ta là tạo ra những gà chọi đi thi thố khắp nơi trên thế giới để lấy tiếng, trong khi đó toàng dân chả có miếng nào để hưởng lợi đem đến từ nganh GD;
& nhiều người trong ngành này thuộc diện giáo chức, không tự nuôi bỡi chuyện phục vụ trong ngành nên đẻ ra vô vàng thứ bậy bạ & hậu quả là trường không ra trường, lớp không ra lớp, thây cô không ra thầy cô,. . . . bằng cấp có thể mua thoải mái,. . . .

Chán, không muốn nói nữa!
 
Sau 1975, may mắn là có được khoảng 15 năm chưa loạn giáo dục, tụi tôi vẫn còn được học nhẹ nhàng gần như trước. Chương trình học nhẹ nhưng chấm điểm rất mắc. Tôi thuộc loại nhất lớp mà toán có bao giờ điểm trung bình được 9,0 đâu, văn thì cỡ 6.5.

Còn bây chừ cấp 1 tụi nó học gì mà như cấp 2. Cấp 2 thì học như cấp 3, còn cấp 3 học như nghiên cứu làm luận văn thạc sĩ. Điểm thì chót vót 9.7, 9.9, điểm 10,0 tròn không ít.
Hồi xưa chấm điểm trên 20. Rất hiếm khi có ai chấm đến điểm này. Trừ phi Thầy/Cô cho làm toán chạy (*1)

(*1) Toán chạy: Thầy/Cô ra bài toán. Học sinh làm thật nhanh. Chỉ 10 bài đầu tiên đọc chấm điểm một bài là 5 điểm. Cuối ngày sẽ tổng 4 điểm lớn nhất. Và cứ thế học sinh đạt đủ 20 thì ngưng, và nhường cho các bạn chạy vòng sau. Các vòng kể từ 5 trở đi chỉ chấm đến 4,5 điểm.

Hồi xưa chương trình nhẹ, người ta đã phân ban rồi. Mục đích để phát huy sở trường, tránh việc học nhiều kiến thức thiếu thiết thực đối với cá nhân. Nay cũng phải quay trở lại cách làm như vậy.
Chương trình học về sau này tuy cố học cao nhưng hình như không rộng đủ. Tôi thấy tuổi trẻ ngày nay thiếu hẳn kiến thức về toán số, và căn bản xác suất thống kê.
 
Hồi xưa chấm điểm trên 20. Rất hiếm khi có ai chấm đến điểm này. Trừ phi Thầy/Cô cho làm toán chạy (*1)

(*1) Toán chạy: Thầy/Cô ra bài toán. Học sinh làm thật nhanh. Chỉ 10 bài đầu tiên đọc chấm điểm một bài là 5 điểm. Cuối ngày sẽ tổng 4 điểm lớn nhất. Và cứ thế học sinh đạt đủ 20 thì ngưng, và nhường cho các bạn chạy vòng sau. Các vòng kể từ 5 trở đi chỉ chấm đến 4,5 điểm.


Chương trình học về sau này tuy cố học cao nhưng hình như không rộng đủ. Tôi thấy tuổi trẻ ngày nay thiếu hẳn kiến thức về toán số, và căn bản xác suất thống kê.
Toán chạy: sau 75 khi tôi học tiểu học vẫn còn, chừ không biết còn không. Thường thì tôi ít lụm được điểm này. Nhanh không phải là sở trường của tôi mà --=0

Chương trình học chừ cố nhồi nhét nên không sâu. Học sinh học nhưng không biết để làm gì với mớ kiến thức hầm bà lằng đó. Ví dụ học 1m nhưng không biết trên thực địa 1m đó nó dài khoảng chừng nào, tương đương với cái gì trong cơ thể mình (sau này lớn lên các em mới biết chứ khi đang học thì mù tịt)
 

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

Back
Top Bottom