#296. Dãy số truy hồi (TICKETS)

Bộ nhớ: 512 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Cho một dãy số nguyên \{a_n\} được định nghĩa bởi quy tắc sau:

  • Phần tử đầu tiên: a_0 = 1 .
  • Công thức truy hồi: a_{i+1} = (A \times a_i + a_i \bmod B) \bmod C với mọi i \ge 0 .

Hãy tìm chỉ số k nhỏ nhất ( k > 0 ) sao cho giá trị a_k đã từng xuất hiện trước đó trong dãy số (tức là tồn tại một chỉ số j < k sao cho a_k = a_j ).

Dữ liệu: Một dòng chứa ba số nguyên, lần lượt là A, B, C .

Kết quả: Xuất ra vị trí (chỉ số) đầu tiên xuất hiện hạng tử lặp lại. Nếu đáp án vượt quá 2\times 10^6 , xuất ra -1 .

Ví dụ:

Dữ liệu:

2 2 9

Kết quả:

4

Giới hạn:

  • 30\% số dữ liệu có A, B, C \le { 10^5 } .
  • 100\% số dữ liệu có A, B, C \le { 10^9 } .
  • 30\% số dữ liệu có giới hạn bộ nhớ 4\text{M} (Tuy nhiên do hạn chế của hệ thống chấm, giới hạn bộ nhớ phần này đã bị hủy bỏ).