Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Hệ điều hành Unix] Số block chỉ mục cần cho file

    Một file cần D block dữ liệu. Inode có nd con trỏ direct, một single indirect (chứa k con trỏ), một double indirect (chứa k block chỉ mục con, mỗi block k con trỏ). Bỏ qua triple indirect (giả thiết file đủ nhỏ).

    Số block chỉ mục (metadata) cần thêm:

    • Nếu D ≤ nd: 0 block chỉ mục.
    • Ngược lại, dùng hết direct, còn r = D - nd block. Lấp single indirect: cần 1 block chỉ mục cho tối đa k block. Nếu vẫn còn dư r', dùng double indirect: cần 1 block chỉ mục mức 1 cộng ceil(r' / k) block chỉ mục mức 2.

    In tổng số block chỉ mục cần.

    Ví dụ: D=100, nd=12, k=128 → còn 88 ≤ 128 nên chỉ cần 1 block chỉ mục (single indirect).

    • Định dạng đầu vào:

      Một dòng gồm ba số nguyên D, nd, k.

    • Ràng buộc đầu vào:

      0 ≤ D ≤ 10^12; 0 ≤ nd ≤ 64; 1 ≤ k ≤ 10^6. Dữ liệu đảm bảo file không vượt quá khả năng của double indirect.

    • Định dạng đầu ra:

      Một số nguyên: số block chỉ mục (metadata) cần dùng.

    Ví dụ:

    Đầu vào:

    100 12 128
    

    Đầu ra:

    1

    Giải thích:

    88 block còn lại ≤ 128 → lấp single indirect, cần đúng 1 block chỉ mục.

    Đang tải editor...