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

Xét dãy số nguyên dương \(A = (a_1, a_2, \dots, a_n)\) và hai thao tác trên dãy:

  1. Thao tác loại 0 với hai thông số \(i, x\): Thay đổi phần tử \(a_i\) bằng số nguyên dương \(x\) (\(1 \le i \le n, 1 \le x \le 10^6\)).
  2. Thao tác loại 1 với hai thông số \(L, R\): Gọi \(P\) là tích các số từ \(a_L\) đến \(a_R\), \(D(P)\) là số ước số của \(P\). Thao tác này yêu cầu đưa ra phần dư trong phép chia \(D(P)\) cho \(10^9 + 7\).

Yêu cầu: Cho dãy số \(A\)\(Q\) thao tác, với mỗi thao tác loại 1 hãy đưa ra kết quả tương ứng.

Input

  • Dòng đầu chứa số nguyên \(n\).
  • Dòng thứ hai chứa \(n\) số nguyên dương \(a_1, a_2, \dots, a_n\).
  • Dòng thứ ba chứa số nguyên \(Q\) là số thao tác.
  • Tiếp theo là \(Q\) dòng, mỗi dòng chứa ba số mô tả các thao tác:
    • Nếu là thao tác loại 0: dòng gồm ba số 0 i x.
    • Nếu là thao tác loại 1: dòng gồm ba số 1 L R.

Output

  • Ghi ra kết quả gồm nhiều dòng, mỗi dòng là một số tương ứng với kết quả của các thao tác loại 1 theo thứ tự xuất hiện.

Constraints

  • \(1 \le n, Q \le 10^5\).
  • \(1 \le a_i, x \le 10^6\).
  • Các subtask:
    • Subtask 1 (30% số điểm): \(n, Q \le 1000\).
    • Subtask 2 (30% số điểm): \(n, Q \le 5 \cdot 10^4\) và không có thao tác loại 0.
    • Subtask 3 (40% số điểm): \(n, Q \le 10^5\).

Example

Test 1

Input
4
1 2 3 4
3
1 3 4
0 4 1
1 1 4
Output
6
4
Note
  • Thao tác 1: \(L=3, R=4 \Rightarrow P = 3 \cdot 4 = 12\). Các ước của 12 là \(\{1, 2, 3, 4, 6, 12\}\). Số lượng ước là 6.
  • Thao tác 2: Thay \(a_4 = 1\). Dãy trở thành \(1, 2, 3, 1\).
  • Thao tác 3: \(L=1, R=4 \Rightarrow P = 1 \cdot 2 \cdot 3 \cdot 1 = 6\). Các ước của 6 là \(\{1, 2, 3, 6\}\). Số lượng ước là 4.

Nguồn: Thầy Đông '21

Bình luận

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

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