Điều hướng chính

Ngôn ngữ

Phím tắt

/
Chuyển đến ô tìm bài
g p
Đi đến bài tập
g c
Đi đến kỳ thi
g u
Đi đến người dùng
?
Mở trợ giúp phím tắt

Bài tập

Bài được chọn theo nhịp luyện tập của bạn, cùng mọi bài mới vừa lên.

root

Đoạn con nguyên tố

100 điểm

Số nguyên tố là số tự nhiên lớn hơn 1 và chỉ có đúng hai ước số là 1 và chính nó.

Cho một dãy số nguyên gồm \(n\) phần tử \(a_1, a_2, \dots, a_n\).

Yêu cầu: Hãy tìm đoạn con có các phần tử liên tiếp là số nguyên tố trong dãy số trên sao cho nó có số phần tử là lớn nhất.

Input

Dữ liệu vào: từ tệp văn bản DCNT.INP có cấu trúc:

  • Dòng thứ nhất ghi số tự nhiên \(n\) (\(0 < n \le 10^6\)).
  • Dòng thứ hai gồm \(n\) số nguyên \(a_1, a_2, \dots, a_n\) (\(|a_i| \le 10^7\)), các số cách nhau một dấu cách.

Output

Dữ liệu ra:
Ghi vào tệp DCNT.OUT duy nhất một số là độ dài đoạn con tìm được theo yêu cầu.

Example

Test 1

Input
6
1 5 3 2 7 4
Output
4
Note

Bốn phần tử \(5, 3, 2, 7\) là đoạn con nguyên tố dài nhất.

Scoring

  • Có \(30\%\) số test ứng với \(30\%\) số điểm của bài có \(n \le 10^3\), \(|a_i| \le 10^3\).
  • Có \(30\%\) số test ứng với \(30\%\) số điểm của bài có \(n \le 10^4\), \(|a_i| \le 10^6\).
  • Có \(40\%\) số test khác ứng với \(40\%\) số điểm với trường hợp còn lại.

root

Số bộ ba

100 điểm

Cho dãy số nguyên dương \(a_{1}, a_{2}, a_{3}, ..., a_{n}\). Một bộ ba \((i, j, k)\) được gọi là đẹp của dãy \(A\) đã cho nếu thoả mãn:

• \(1 ≤ i ≤ j < k ≤ N\).

• Gọi dãy con liên tiếp \(A_{i}, A_{i + 1}, ... , A_{j}\) là \(X\) và dãy con liên tiếp \(A_{j + 1}, A_{j + 2}, ... , A_{k}\) là \(Y\) thì hai dãy này thoả mãn:

✓ Với mỗi giá trị xuất hiện trong dãy \(X\) thì cũng xuất hiện trong dãy \(Y\).

✓ Với mỗi giá trị xuất hiện trong dãy \(Y\) thì cũng xuất hiện trong dãy \(X\).

Yêu cầu: Cho dãy số \(A\) hãy đếm số bộ ba đẹp \((i, j, k)\) của dãy số này.

Input

• Dòng đầu chứa số nguyên \((1 ≤ N ≤ 2 × 10^5)\).

• Dòng thứ hai chứa \(n\) số nguyên \(A_{i}\) \((1 ≤ A_{i} ≤ N)\).

Output

Ghi ra một số nguyên là số lượng bô ba đẹp của dãy đã cho.

Example

Test 1

Input
7
3 1 2 1 2 3 1
Output
4
Note

Các bộ ba \((i, j, k)\) thoả mãn là:

  1. (1, 3, 6)

  2. (1, 3, 7)

  3. (1, 4, 7)

  4. (2, 3, 5)

Scoring

Subtask \(1\) (\(20\) điểm): \(N ≤ 500\).

Subtask \(2\) (\(20\) điểm): \(N ≤ 5000\).

Subtask \(3\) (\(20\) điểm): \(A_{i} ≤ 50\).

Subtask \(4\) (\(20\) điểm): Mỗi giá trị xuất hiện đúng hai lần.

Subtask \(5\) (\(20\) điểm): Không có ràng buộc gì thêm.

root

Tô màu dải lụa

100 điểm

Tại một ngôi làng cổ nổi tiếng với nghề thủ công truyền thống, lễ hội mùa xuân đang đến gần. Theo phong tục, mỗi gia đình sẽ treo một dải lụa dài trước cửa nhà như biểu tượng của may mắn và thịnh vượng.

Gia đình của Mitsuha cũng vậy, họ sẽ tự tô màu một dải lụa rồi treo trước nhà. Và năm nay, Mitsuha được giao nhiệm vụ lên kế hoạch trang trí dải lụa đó.

Khi ta trải thẳng dải lụa, nó như một đoạn thẳng có \(N\) ô, và ban đầu có một số ô đã được vẽ sẵn họa tiết. Những ô còn lại đang có màu \(0\).

Quy trình tô diễn ra như sau:

  • Mitsuha chọn một cây bút có mã màu từ \(1\) đến \(10^{18}\).
  • Bước tiếp theo, cô sẽ chọn một trong \(N\) ô, và tại ô đó chưa được tô màu và cũng không chứa họa tiết. Sau đó cô có một trong \(2\) lựa chọn sau: \begin itemize
  • Cô vẽ hoạ tiết lên ô đó.
  • Cô bắt đầu tô từ ô được chọn, sau đó kéo một đường sang trái cho đến khi cô gặp một ô có họa tiết hoặc đã được tô màu sẵn hoặc ra khỏi dải lụa. Những ô vừa tô sẽ mang màu \(i\) là mã của cây bút màu cô chọn.

\end itemize

  • Quy trình tô này có thể kết thúc tại bất cừ thời điểm nào.

\begincenter

\smallVí dụ khi Mitsuha đặt bút màu đỏ tại ô \(5\), khi đó cô ấy sẽ kéo màu sang trái đến ô \(3\) - là ô có họa tiết. (X là các ô có họa tiết)
\endcenter
Lưu ý trong quy trình trên, một mã màu chỉ được chọn nhiều nhất một lần.

Mitsuha muốn được biết có bao nhiêu cách tô màu khác nhau cho dải lụa trên. \(2\) cách được gọi là khác nhau khi không tồn tại cách đánh số lại màu để tạo ra dải màu tương tự. Lưu ý, màu của các họa tiết không phân biệt.

Ví dụ xét \(2\) dải màu: \([3, 3, 1, 0]\) và \([2, 2, 3, 0]\), hai dãy trên là tương đương vì ta có cách đánh số \(3\)->\(2\), \(1\)->\(3\) để từ dãy \(1\) ta thu được dãy \(2\).

Chưa kết thúc ở đó, có \(Q\) truy vấn làm thay đổi trạng thái của một ô trong dải. Cụ thể mỗi truy vấn là \([L, R]\) các ô có chỉ số thuộc đoạn này nếu đang có họa tiết thì trở nên không có họa tiết, và ngược lại.

Được biết dải lụa ban đầu không có màu và không có họa tiết. Hãy giúp Mitsuha tìm cách giải bài toán này nhé.

Input

  • Dòng đầu tiên chứa hai số nguyên dương \(N\), \(Q\) \((1 \leq N \leq 10^{18},\ 1 \leq Q \leq 10^5)\) --- số lượng ô trong dải và số lần cập nhật.
  • Mỗi dòng trong \(Q\) dòng tiếp theo chứa hai số nguyên dương \(L\) và \(R\) \((1 \leq L, R \leq N)\) --- mô tả đoạn cần cập nhật.

Output

  • In ra \(Q\) dòng, dòng thứ \(i\) chứa một số nguyên --- phần dư khi chia số cách tô hợp lệ cho \(10^9 + 7\).

Example

Test 1

Input
1 2
1 1
1 1
Output
1
3
Note

Giải thích cho test đầu tiên: Xem ô mang màu -1 nếu nó chứa họa tiết.
Ban đầu dãy là [0], sau truy vấn \(1\) thì dãy là [-1] (có 1 cách). Sau truy vấn \(2\), dãy là [0] khi đó có \(3\) cách \([0], [1], [-1]\).

Test 2

Input
3 2
2 2
1 3
Output
9
3

Test 3

Input
100 3
10 20
15 58
1 15
Output
318045953
998064805
390938541

Scoring

\begintabular|c|c|l|
\hline
Subtask & Điểm & Ràng buộc

\hline
1 & 30 & \(N, Q \leq 1000\)

2 & 30 & \(N \leq 10^5\)

3 & 40 & Không có ràng buộc bổ sung

\hline
\endtabular

root

Đếm cặp chỉ số

100 điểm

Cho một dãy \(A\) gồm \(n\) số nguyên dương \(a_1, a_2, \dots, a_n\).

Yêu cầu: Đếm tất cả các cặp chỉ số \(i, j\) \((1 \le i \le j \le n)\) sao cho tổng các phần tử liên tiếp từ chỉ số \(i\) đến chỉ số \(j\) trong dãy \(A\) là một số chẵn.

Cụ thể, ta định nghĩa:
$
S_{ij} = a_i + a_{i+1} + \dots + a_j
$

Yêu cầu: Đếm số lượng cặp \((i, j)\) sao cho \(S_{ij}\) là số chẵn.

Input

Dữ liệu được đọc từ file CPAIR.INP:

  • Dòng đầu chứa số nguyên dương \(n\) (\(1 \le n \le 10^6\)) --- số phần tử của dãy \(A\).
  • \(n\) dòng tiếp theo, mỗi dòng chứa một số nguyên dương \(a_i\) (\(1 \le a_i \le 10^9\)) --- phần tử thứ \(i\) của dãy.

Output

Ghi ra file CPAIR.OUT một dòng duy nhất chứa số nguyên --- kết quả bài toán: số lượng cặp \((i, j)\) thoả mãn điều kiện tổng là số chẵn.

Example

Test 1

Input
4
2
5
6
8
Output
4
Note

Giải thích: Có tổng cộng \(4\) cặp chỉ số \((i, j)\) thoả mãn điều kiện:

  • \((1, 1)\): \(2\) là chẵn
  • \((3, 3)\): \(6\) là chẵn
  • \((3, 4)\): \(6 + 8 = 14\) là chẵn
  • \((4, 4)\): \(8\) là chẵn

Scoring

  • 20% test có \(1 \le n \le 10^2\), \(1 \le a_i \le 10^9\)
  • 20% test có \(1 \le n \le 10^3\), \(1 \le a_i \le 10^9\)
  • 60% test có \(1 \le n \le 10^6\), \(1 \le a_i \le 10^9\)
Xem thêm