Tích phần tử thiếu

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: 1300 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho hai số nguyên dương \(n\), \(m\) và mảng \(a\) gồm \(n\) số nguyên dương phân biệt \(a_1,a_2,\ldots,a_n\).

Yêu cầu: Với mỗi truy vấn \(l,r\), hãy tính tích của các số từ \(1\) đến \(m\) không xuất hiện trong đoạn \(a_l,a_{l+1},\ldots,a_r\). In kết quả modulo \(10^9+7\).

Input

  • Dòng đầu tiên gồm hai số nguyên dương \(n,m\) \((n,m \le 10^5)\).
  • Dòng thứ hai gồm \(n\) số nguyên dương \(a_1,a_2,\ldots,a_n\) \((a_i \le m)\).
  • Dòng thứ ba gồm số nguyên dương \(q\) \((q \le 10^5)\).
  • \(q\) dòng tiếp theo, mỗi dòng gồm hai số nguyên dương \(l,r\) \((1 \le l,r \le n)\).

Output

  • Với mỗi truy vấn, in ra một dòng là đáp án của truy vấn sau khi chia lấy dư cho \(10^9+7\).

Example

Test 1

Input
5 8
1 4 5 7 8
2
2 5
1 3
Output
36
2016

Scoring

  • Subtask 1 (\(20\%\) điểm): \(n,q \le 2000\)
  • Subtask 2 (\(30\%\) điểm): \(m \le 2000\)
  • Subtask 3 (\(50\%\) đ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.