Tin học C++

Thảo luận trong 'Dòng họ c , c++ , c#' bắt đầu bởi Tiến huân, 11 Tháng bảy 2019.

Lượt xem: 156

  1. Tiến huân

    Tiến huân Học sinh mới Thành viên

    Bài viết:
    4
    Điểm thành tích:
    1
    Nơi ở:
    Phú Yên
    Trường học/Cơ quan:
    Lương văn chánh
    Sở hữu bí kíp ĐỖ ĐẠI HỌC ít nhất 24đ - Đặt chỗ ngay!

    Đọc sách & cùng chia sẻ cảm nhận về sách số 2


    Chào bạn mới. Bạn hãy đăng nhập và hỗ trợ thành viên môn học bạn học tốt. Cộng đồng sẽ hỗ trợ bạn CHÂN THÀNH khi bạn cần trợ giúp. Đừng chỉ nghĩ cho riêng mình. Hãy cho đi để cuộc sống này ý nghĩa hơn bạn nhé. Yêu thương!

    Bé Bi rất thông minh và hiếu động. Bé vẫn thường chơi với những khối gỗ lập phương được sơn xanh hoặc đỏ. Một hôm bé lấy những khối gỗ thường ngày, xếp chồng lên nhau để tạo thành hình kim tự tháp. Bé xây theo nguyên tắc như sau: tầng dưới cùng có K * K khối lập phương. Tầng trên có (K – 1) * (K – 1) khối lập phương. Cho đến tầng trên cùng chỉ có 1 khối lập phương duy nhất. Bé Bi muốn xây một kim tự tháp cao N tầng với điều kiện các khối lập phương bên ngoài trên mỗi tầng chỉ toàn màu xanh. Tuy vậy do số lượng khối lập phương có hạn nên bé không thể xây kim tự tháp như mình mong ước. Hiện tại bé có B khối lập phương màu xanh và R khối lập phương màu đỏ. Hãy giúp bé tính xem, cần có thêm bao nhiêu khối lập phương màu xanh nữa thì sẽ xây được kim tự tháp như ý muốn.
    - Dữ liệu vào: nhập từ bàn phím 3 số nguyên N, B, R
    - Kết quả:
    In ra màn hình một số duy nhất là số khối lập phương xanh cần thêm.
    Ví dụ:

    Dữ liệu vào

    Kết quả

    3 10 1

    3

    Ai có thể giúp mình lập trình bài này bằng c++ với ạ . MK cảm ơn
     
  2. Tiến Phùng

    Tiến Phùng Cố vấn Toán Cu li diễn đàn Cố vấn chuyên môn

    Bài viết:
    2,272
    Điểm thành tích:
    321
    Nơi ở:
    Hà Nội
    Trường học/Cơ quan:
    Trường Đại học Bách Khoa Hà Nội

    Thế thì bài này mặc định là khối đỏ ko có ảnh hưởng gì lắm, khối xanh ngoài bọc bên ngoài cũng có thể xếp vào trong được
    Vậy
    Bước 1 tính tổng số khối lập phương T cần có để xếp được N tầng
    Bước 2: Tính số lập phương xanh cần có để bọc đủ bên ngoài mỗi tầng, giả sử tầng K thì cần [TEX]K^2-(K-2)^2[/TEX]((k-2)^2 là số khối ở lõi ko cần lập phương xanh) = 4k-4.
    Với riêng tầng 1 thì cần 1 LP xanh chứ ko phải dùng công thức kia.
    Tính tổng LPX cần có của N tầng. Dễ thấy quy luật sau, lần lượt các tầng cần 1,4,8,12... từ 4 trở đi là 1 CSC có công thức tính tổng CSC rồi.
    Vậy có thể tính nhanh số LPX
    Bước 3: So sánh input. nếu B đủ thì số khối cần là T-B-R , nếu hiệu <0 thì trả về 0
    Nếu B thiếu thì lấy LPX-B, sau đó xét hiệu x=T-LPX-R, nếu x>0 thì tổng cần là LPX-B+x
    nếu x<=0 thì tổng cần là LPX-B;

    int SoLuTion(int N, int B, int R)
    {
    int T = N * (N + 1) * (2 * N + 1) / 6;
    int LPX = 1 + (N-1) * (2 * 4 + (N - 2) * 4) / 2;
    int res;
    if (B >= LPX)
    {
    res = T - B - R;
    if (res < 0) res = 0;
    }
    else
    {
    int X = T - LPX - R;
    if (X > 0) res = LPX - B + X;
    else res = LPX - B;
    }
    return res;
    }
     
    Tiến huân thích bài này.
Chú ý: Trả lời bài viết tuân thủ NỘI QUY. Xin cảm ơn!

Draft saved Draft deleted

CHIA SẺ TRANG NÀY

-->