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ố lần in khi printf xen kẽ fork

    Số lần in khi printf xen kẽ với fork

    Xét đoạn:

    for (int i = 0; i < n; i++) {
        printf("A\n");
        fork();
    }
    

    Tại vòng lặp thứ i (đếm từ 0), số tiến trình đang chạy là 2^i. Mỗi tiến trình đó in 1 dòng rồi mới fork. Do đó số dòng in ở bước i là 2^i.

    Tổng số dòng in qua tất cả các bước:

    ∑i=0n−12i=2n−1\sum_{i=0}^{n-1} 2^i = 2^n - 1∑i=0n−1​2i=2n−1

    Cho n, tính tổng số dòng "A" được in.

    Ví dụ I/O: với n = 3: bước 0 in 1, bước 1 in 2, bước 2 in 4 → tổng 7.

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

      Một số nguyên n.

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

      0 <= n <= 60

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

      Một số nguyên: tổng số dòng được in 2^n - 1.

    Ví dụ:

    Đầu vào:

    3
    

    Đầu ra:

    7

    Giải thích:

    n = 3: bước 0 có 1 tiến trình in 1 dòng, bước 1 có 2, bước 2 có 4; tổng 1+2+4 = 7 = 2^3 - 1.

    Đang tải editor...