Bài 3: (TS10 Hải Phòng 2026)

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
C++, Pypy 3, Python, Scratch
Điểm: 1300 (p) Thời gian: 1.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Dãy số \(a_1, a_2, \dots, a_n\) được lập theo quy tắc sau:

  • \(a_1 = x, a_2 = y\)
  • \(a_k = (a_{k-1} + a_{k-2}) \pmod M\) với mọi \(k = 3, 4, \dots, n\)

Ở đây phép toán \(p \pmod q\) là phép lấy phần dư khi chia \(p\) cho \(q\) (phép % trong ngôn ngữ C++ và Python).

Cho số nguyên dương \(S\). Hãy tìm dãy con \(a_i, a_{i+1}, \dots, a_j\) có số lượng phần tử nhỏ nhất sao cho: \(a_i + a_{i+1} + \dots + a_j \geq S\).

Input

  • Một dòng duy nhất chứa 5 số nguyên \(n, x, y, M, S\) (\(2 \leq n \leq 2 \cdot 10^5\); \(1 < M \leq 10^4\); \(0 \leq x, y < M\); \(1 \leq S \leq 10^{15}\)) cách nhau bằng khoảng trống.

Output

  • Một số nguyên duy nhất là số lượng phần tử của dãy con tìm được. Nếu không tồn tại dãy con thoả mãn thì in \(-1\).

Example

Test 1

Input
10 1 1 7 19
Output
5
Note

Dãy số được tạo ra là \([1, 1, 2, 3, 5, 1, 6, 0, 6, 6]\). Dãy con ngắn nhất có tổng lớn hơn hoặc bằng \(19\)\([1, 6, 0, 6, 6]\).

Constraints

  • \(40\%\) số tests ứng với \(40\%\) số điểm của bài có \(n \leq 300\);
  • \(30\%\) số tests tiếp theo ứng với \(30\%\) số điểm của bài có \(n \leq 5000\);
  • \(30\%\) số tests còn lại không có ràng buộc bổ sung.

Bình luận

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

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