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] Đếm tiến trình tạo ra qua hai pha fork

    Đếm tiến trình tạo ra qua hai pha fork

    Một chương trình chạy hai pha:

    1. Pha 1: thực hiện a lần fork() đầy đủ (mọi tiến trình đều fork). Sau pha 1 có 2^a tiến trình.
    2. Pha 2: mỗi tiến trình trong số 2^a đó thực hiện b lần fork() mà con sinh ra thoát ngay (chỉ tiến trình đang chạy đi tiếp). Pha 2 tạo thêm 2^a * b tiến trình con.

    Tổng số tiến trình được tạo ra trong toàn bộ chương trình (không kể gốc) là:

    (2a−1)+2a⋅b(2^a - 1) + 2^a \cdot b(2a−1)+2a⋅b

    Cho a và b, hãy in tổng số tiến trình được tạo ra.

    Ví dụ I/O: a = 2, b = 3 → (4 - 1) + 4*3 = 3 + 12 = 15.

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

      Hai số nguyên a và b trên một dòng.

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

      0 <= a <= 40, 0 <= b <= 1000000, kết quả vừa unsigned long long

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

      Một số nguyên: tổng tiến trình được tạo ra (2^a - 1) + 2^a * b.

    Ví dụ:

    Đầu vào:

    2 3
    

    Đầu ra:

    15

    Giải thích:

    a = 2 cho 2^2 = 4 tiến trình (tạo ra 3). Pha 2: mỗi tiến trình tạo 3 con thoát ngay → 4*3 = 12. Tổng = 3 + 12 = 15.

    Đang tải editor...