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

    solution

    Đề bài: [An toàn thông tin] Điều chỉnh độ khó (difficulty adjustment)

    Tự điều chỉnh độ khó

    Bitcoin điều chỉnh độ khó để giữ thời gian ra block ổn định. Công thức (rút gọn, dùng số nguyên):

    new = old * expected_time // actual_time
    
    • Nếu block ra quá nhanh (actual < expected) → độ khó tăng.
    • Nếu block ra quá chậm → độ khó giảm.

    Để tránh biến động sốc, kết quả bị kẹp (clamp) trong khoảng [old // 4, old * 4]. Hãy in độ khó mới.

    Ví dụ

    Input:
    1000
    600
    300
    
    Output:
    2000
    
    • Định dạng đầu vào:

      Ba dòng: old_difficulty, expected_time, actual_time.

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

      1 <= old <= 10^12; 1 <= expected, actual <= 10^9.

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

      Một dòng: độ khó mới (số nguyên, đã kẹp).

    Ví dụ:

    Đầu vào:

    1000
    600
    300
    

    Đầu ra:

    2000

    Giải thích:

    Block ra nhanh gấp đôi (300<600) → new = 1000*600//300 = 2000, nằm trong [250,4000].

    Đang tải editor...