Bedao Regular Contest 15 - LOVELYPAIR

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

Trong tiết học môn Nhập môn Công nghệ Thông tin, bạn ~H~ đã được học về các phép toán trên bit (bitwise operations). Rất hứng thú với các phép toán này, bạn ~H~ đã định nghĩa một cặp số đáng yêu như sau:

Một cặp số đáng yêu là một cặp 2 số ~a~ và ~b~ khác nhau sao cho:

$$(a \oplus b) \equiv (a \land b) \mod k$$

Với:

  • ~\oplus~ là phép toán XOR.

  • ~\land~ là phép toán AND.

Bạn ~H~ đi khoe với mọi người về cặp số đáng yêu của mình và sau đó đố ~U~ xem là có bao nhiêu cặp số đáng yêu ~(a, b)~ sao cho ~L \le a < b \le R~. Bạn hãy giúp ~U~ tìm ra đáp án nhé!

Input

Gồm một dòng duy nhất chứa 3 số nguyên dương lần lượt là ~l~, ~r~ và ~k~ (~1 \le l \le r \le 10^{18};\ k \le 10^4~).

Output

Gồm một dòng duy nhất chứa 1 số nguyên không âm duy nhất là số lượng cặp số đáng yêu cần tìm đem chia dư với ~10^9+7~.

Scoring

  • Subtask ~1~ (~30~ điểm): ~r-l \le 1000~.

  • Subtask ~2~ (~30~ điểm): ~l=1~.

  • Subtask ~3~ (~40~ điểm): không có ràng buộc gì thêm.

Sample Input 1

1 10 3

Sample Output 1

15

Notes

Trong test ví dụ thứ nhất, dưới đây là 15 cặp số đáng yêu thỏa mãn:

~a~ ~b~ ~a \land b~ ~a \oplus b~
1 2 0 3
1 5 1 4
1 8 0 9
2 4 0 6
2 7 2 5
2 10 2 8
3 6 2 5
3 9 1 10
4 5 4 1
4 8 0 12
5 7 5 2
5 10 0 15
6 9 0 15
7 8 0 15
8 10 8 2

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.