Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: Đếm số lượng các chữ số từ 1 đến N

  1. #1
    Ngày gia nhập
    11 2018
    Bài viết
    2

    Mặc định Đếm số lượng các chữ số từ 1 đến N

    Bài toán: Nam quyết định đánh số trang cho quyển sách của anh ta từ 1 đến N. Hãy tính toán số lượng chữ số 0 cần dùng, số lượng chữ số 1 cần dùng, ..., số lượng chữ số 9 cần dùng.
    Ví dụ số 21 sẽ có các trang:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

    sẽ cần dùng: 2 số 0, 13 số 1, 4 số 2, 2 số 3, 2 số 4, 2 số 5, 2 số 6, 2 số 7, 2 số 8, 2 số 9.

    Bạn nào có ý tưởng cho bài này không?
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    Đã được chỉnh sửa lần cuối bởi Benjamin Engel : 16-11-2018 lúc 10:29 AM.

  2. #2
    Ngày gia nhập
    02 2016
    Bài viết
    305

    Trích dẫn Nguyên bản được gửi bởi Benjamin Engel Xem bài viết
    ...
    Bạn nào có ý tưởng cho bài này không?
    Bài này chắc chịu khó tìm trong các bài giải về toán số định lượng sẽ có công thức.
    Trong khi chờ đợi công thức, muốn làm kiểu mò ốc thì như sau:

    1. đặt một mảng int 10 phần tử (0 đến 9)
    2. viết một hàm con, bên trong hàm con:
    - dùng phương pháp chia và trừ (tức là mô đu lô) để đọc các chữ số, được chữ số nào thì ghi vào mảng: m[chuSo]++
    3. trong hàm chính, cho vòng lặp chạy từ 1 đến N, gọi hàm con trên ghi kết quả vào mảng.
    4. đọc mảng kết quả thì biết cần bao nhiêu cho mỗi chữ số.
    5. có thể cải tiến bằng cách đi ngược từ số lớn xuống số nhỏ. Điển hình là ở một hàng đơn vị, nếu có chuSo thì đương nhiên có chuSo-1, và có chuSo-1 thì có chuSo-2,... Và nhu vậy thì có thể nhảy bước được (tôi chỉ nghĩ vậy thôi, chứ chưa chắc đã cải tiến được bao nhiêu)

  3. #3
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    580

    Cho t chạy từ 1 đến 21 và đếm xem t có bao nhiêu chữ số 0.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  4. #4
    Ngày gia nhập
    11 2018
    Bài viết
    2

    Cảm ơn bạn. Cách duyệt này có lẽ sẽ không khả thi lắm khi N lớn hoặc test nhiều, nhưng dù sao cũng là 1 hướng giải quyết bài toán. Lót dép hóng tiếp vậy.

  5. #5
    Ngày gia nhập
    01 2008
    Nơi ở
    Rất đông người
    Bài viết
    580

    Bạn có thể thử cải biên như sau. Thay vì cho t chạy từ 1 đến 21, hãy cho t chạy từ 0 đến 9.
    -...- -.- .. .-.. .-.. - .... . -... . .- ... - .-.-.

  6. #6
    Ngày gia nhập
    01 2013
    Bài viết
    1,479

    Mặc định Đếm số lượng các chữ số từ 1 đến N

    Bạn bổ dọc rồi tính từ 1 đến 9, rồi từ 1 đến 99, ... suy ra công thức.
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn