Chu trình hoán vị

Xem dạng PDF

Gửi bài giải


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

Nguồn bài:
by winterwolf94
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Nam rất thích hoán vị. Một hoán vị ~N~ là một cách sắp xếp ~N~ số nguyên dương từ 1 đến ~N~, mỗi số chỉ xuất hiện một lần. Ví dụ (~1~, ~3~, ~5~, ~2~, ~4~) là một hoán vị 5.

Phép nhân 2 hoán vị N (~a_{1}~, ~a_{2}~, ~a_{3}~, ~\cdots~, ~a_{n}~) và (~b_{1}~, ~b_{2}~, ~b_{3}~, ~\cdots~, ~b_{n}~) được định nghĩa như sau

(~a_{1}~, ~a_{2}~, ~a_{3}~, ~\cdots~, ~a_{n}~) ~\times~ (~b_{1}~, ~b_{2}~, ~b_{3}~, ~\cdots~, ~b_{n}~) = (~a_{b1}~,~a_{b2}~, ~a_{b3}~, ~\cdots~, ~a_{bn}~)

Ví dụ : (~2~, ~5~, ~1~, ~4~, ~3~) ~\times~ (~3~, ~4~, ~2~, ~5~, ~1~) = (~1~, ~4~, ~5~, ~3~, 2)

Phép lũy thừa hoán vị được định nghĩa theo phép nhân hoán vị :

(~a_{1}~, ~a_{2}~, ~a_{3}~, ~\cdots~, ~a_{n}~)~^ 2~ = (~a_{1}~, ~a_{2}~, ~a_{3}~, ~\cdots~, ~a_{n}~) ~\times~ (~a_{1}~, ~a_{2}~, ~a_{3}~, ~\cdots~, ~a_{n}~)

(~a_{1}~, ~a_{2}~, ~a_{3}~, ~\cdots~, ~a_{n}~)~^k~ = (~a_{1}~, ~a_{2}~, ~a_{3}~, ~\cdots~, ~a_{n}~) ~\times~ (~a_{1}~, ~a_{2}~, ~a_{3}~, ~\cdots~, ~a_{n}~) ~\times \cdots \times~ (~a_{1}~, ~a_{2}~, ~a_{3}~, ~\cdots~, ~a_{n}~)  (~k~ phép nhân hoán vị)

Nam nhận thấy có những số nguyên ~X~ mà (~a_{1}~, ~a_{2}~, ~a_{3}~, ~\cdots~, ~a_{n}~ )~^X~ = (~a_{1}~, ~a_{2}~, ~a_{3}~, ~\cdots~, ~a_{n}~). Khi đó ta gọi ~X~ là một chu trình của (~a_{1}~, ~a_{2}~, ~a_{3}~, ~\cdots~, ~a_{n}~).

Với một một hoán vị ban đầu (~a_{1}~, ~a_{2}~, ~a_{3}~, ~\cdots~, ~a_{n}~). Nam muốn tìm số nguyên dương ~K~ nhỏ nhất sao cho ~K+1~ là một chu trình của (~a_{1}~, ~a_{2}~, ~a_{3}~, ~\cdots~, ~a_{n}~). Hãy giúp Nam.

Input

Dòng đầu ghi số nguyên dương ~N~ (~1~ ~\le~ ~N~ ~\le~ ~2 \times 10^{6}~)

Dòng thứ 2 gồm ~N~ số nguyên dương khác nhau đôi một thể hiện hoán vị ban đầu.

Output

Gồm một số nguyên ~M~ duy nhất là số dư của ~K~ cho ~10^{9} + 7~.

Dữ liệu vào bảo đảm có kết quả.

Giới hạn

Trong 30% số test có ~N \le 500~,  ~K \le 5 \times 10^{5}~.

Trong 50% số test, ~K~ ~\le~ ~10^{18}~.

Sample Input 1

5
5 3 2 1 4

Sample Output 1

6

Sample Input 2

5
1 2 3 4 5

Sample Output 2

1

Sample Input 3

5
5 4 3 2 1

Sample Output 3

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.