Đếm khoảng

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: 1600 (p) Thời gian: 0.5s Bộ nhớ: 1G Input: SDIFF.INP Output: SDIFF.OUT

Cho dãy số nguyên \(A=(a_1,a_2,\ldots,a_n)\) với một dãy con khác rỗng gồm các phần tử liên tiếp trong \(A\), ta định nghĩa độ lệch của dãy con đó là hiệu số phần từ lớn nhất trừ phần tử nhỏ nhất trong dãy con.

Yêu cầu: Với số nguyên \(k\), cho biết có bao nhiêu dãy con khác rỗng gồm các phần tử liên tiếp trong \(A\) có độ lệch không quá \(k\).

Để tránh việc phải đọc một lượng dữ liệu quá lớn, dãy \(A\) sẽ được cho bởi 3 số nguyên \(p,q,m\). Mỗi phần tử a_i∈A sẽ được tính bởi công thức:

\[a_i=(p\times i+q) \ \text{mod} \ m\]

Ví dụ với \(n=5,p=3,q=0,m=5\), dãy \(A\) sẽ là \((3,1,4,2,0)\).

Input

Vào từ file văn bản SDIFF.INP

  • Dòng 1 chứa số nguyên dương \(n \leq 5\cdot 10^6\).
  • Dòng 2 chứa 3 số nguyên không âm \(p,q,m \leq 10^9\) \((m>0)\).
  • Dòng 3 chứa số nguyên không âm \(k\leq 10^9\).

Output

Ghi ra file văn bản SDIFF.OUT một số nguyên duy nhất là số dãy thỏa mãn yêu cầu đề bài.

Example

Test 1

SDIFF.INP
5
3 0 5
2
SDIFF.OUT
8

Nguồn: Thầy Lê Minh Hoàng

Bình luận

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

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