Bedao Regular Contest 13 - EVAL

Xem dạng PDF

Gửi bài giải


Điểm: 0,70 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Cho đoạn mã C++ sau đây:

int random(int L, int R) {
    // return a random value in range [L, R] with an equal probability
}

int call(int l, int r) {
    if (r - l <= 1) return 0;
    int idx = random(l, r);
    if (idx == l || idx == r) return 1 + call(l, r);
    return 1 + call(l, idx - 1) + call(idx + 1, r);
}

Hãy tính Giá trị kì vọng của hàm call(1, n), với ~n~ là dữ liệu nhập vào.

Input

  • Một dòng duy nhất chứa số nguyên dương ~n~ (~1 \le n \le 10^6~).

Output

  • Biết đáp án của bài toán sẽ có dạng phân số tối giản ~\frac{p}{q}~, hãy in ra ~p \times q^{-1} \mod 10^9 + 7~.

Scoring

  • ~40\%~ số test thỏa mãn ~n \le 500~.

  • ~40\%~ số test khác thỏa mãn ~n \le 5000~.

  • ~20\%~ số test còn lại không có ràng buộc gì thêm.

Sample Input 1

3

Sample Output 1

3

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.