Trùng lặp

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1000 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: LAP.INP Output: LAP.OUT

Q vừa tìm hiểu về Radix Sort, cảm thấy vô cùng thích thú nên bạn ấy đã áp dụng vào bài toán này. Xét dãy số \(a\) gồm \(n\) phần tử được tạo từ các số nguyên \(b, c, d, M\) theo công thức như sau:

  • \(a_1 = b\)
  • \(a_2 = c\)
  • \(a_i = (a_{i-2} \times a_{i-1} + d) \% M\) với mọi \(i\)\(3 \le i \le n\). Trong đó \(\%\) kí hiệu cho phép chia lấy dư.

Q dự đoán rằng, dãy \(a\) sau khi tạo sẽ có rất nhiều giá trị trùng lặp. Q muốn tìm ra giá trị xuất hiện nhiều lần nhất.

Yêu cầu: Cho biết \(n, b, c, d, M\). Hãy tìm giá trị xuất hiện nhiều lần nhất trong \(a\). Nếu có nhiều giá trị như vậy, in ra giá trị lớn nhất.

Input

  • Dòng duy nhất chứa các số nguyên \(n, b, c, d, M\) theo thứ tự.
  • Dữ liệu vào đảm bảo \(0 \le b, c, d < M \le 10^7\); \(n \le 10^7\).

Output

  • Ghi ra tệp văn bản LAP.OUT: Dòng duy nhất chứa giá trị cần tìm.

Example

Test 1

Input
5 2 3 1 6
Output
5
Note

Dãy số \(a\) được tạo ra là \(2, 3, 1, 4, 5\).

Ràng buộc

  • Subtask 1 (\(30\%\) số điểm): \(n, M \le 1000\).
  • Subtask 2 (\(30\%\) số điểm): \(n, M \le 10^5\).
  • Subtask 3 (\(40\%\) số điểm): không có ràng buộc gì thêm.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: