Mê cung Praw

Xem dạng PDF

Gửi bài giải

Điểm: 100,00
Giới hạn thời gian: 2.0s
Giới hạn bộ nhớ: 512M
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C++

*Nguồn đề + test: * Free Contest (https://freecontest.net/),

* Đề gốc: * https://drive.google.com/file/d/181C1ZLuJW-n0Ln4Y221uAbShnJOAnLIB/view

*Lời giải: * https://drive.google.com/file/d/1IXafO_AxmNyrrDYVg2yeGIzvBKGKP3nh/view

Cho một mê cung gồm n phòng xếp thành 1 hàng, các phòng đánh số từ 1 đến n. Mỗi phòng được mã hóa bằng một số tự nhiên từ 0 đến ~2^{30}-1~. Hải đang ở phòng số 1. Hải có thể di chuyển từ phòng a đến phòng b khi và chỉ khi:

  • a < b
  • Gọi số mã hóa của phòng ab lần lượt là xy. Khi đó phải tồn tại số tự nhiên k để :

    ~ \left \lfloor \frac{x}{2^k} \right \rfloor \quad , \left \lfloor \frac{y}{2^k} \right \rfloor \quad ~ đều là số lẻ.

    ~ \left \lfloor x \right \rfloor \quad ~ : là số x làm tròn xuống. Vd: ~ \left \lfloor 1.6 \right \rfloor \quad ~ = 1

Đồng thời, số cách di chuyển từ phòng a *đến phòng *b bằng số lượng k thỏa mãn yêu cầu trên.

Hải biết rằng mình cần đến được phòng n để thoát khỏi mê cung. Hỏi Hải có bao nhiêu cách để di chuyển từ phòng 1 đến phòng n? Hai cách di chuyển được gọi là khác nhau nếu Hải đi qua một phòng trong một cách nhưng không đi qua trong cách kia, hoặc Hải dùng 2 cách khác nhau để di chuyển giữa hai phòng. Đáp án có thể rất lớn hãy đưa ra đáp án chia dư cho 10^9 + 7.

Input

  • Dòng đầu tiên chứa N ~(1 \leq N \leq 10^5)~
  • Dòng thứ hai gồm n số nguyên dương không lớn hơn ~10^9~, trong đó số thứ i là số mã hóa của phòng thứ i.

Output

  • In ra một số nguyên duy nhất là số cách di chuyển từ phòng 1 đến phòng n, modulo ~10^9 +7~.

Sample Input 1

4
1 3 3 1

Sample Output 1

5

Giải thích đáp án :

Đường đi 1 :
    phòng 1 - 2 : k = 0
    phòng 2 - 3 : k = 0
    phòng 3 - 4 : k = 0

Đường đi 2 :
    phòng 1 - 2 : k = 0
    phòng 2 - 3 : k = 1
    phòng 3 - 4 : k = 0

Đường đi 3 :
    phòng 1 - 4 : k = 0

Đường đi 4 :
    phòng 1 - 2 : k = 0
    phòng 2 - 4 : k = 0

Đường đi 5 :
    phòng 1 - 3 : k = 0
    phòng 3 - 4 : k = 0

Sample Input 2

9
1 3 5 7 9 11 13 15 17

Sample Output 2

732

Task:

  • Subtask 1 (10% số test) : ~n \leq 8~
  • Subtask 2 (40% số test) : ~n \leq 10^3~
  • Subtask 3 (50% số test) : Không ràng buộc gì thêm

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.