Điều hướng chính

Nhắn tin NQ Coding

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.

Dễ

Tiểu sử thú vị

100 điểm 0% AC 0 đã giải

root

Ngày hè ở nhà chán quá Quân không biết làm gì, nên Quân đã lựa chọn viết lại tiểu sử \(facebook\) để gây sự chú ý với \(crush\). Vì mục đích gây sự chú ý với cô, Quân chỉ sử dụng đúng \(5\) kí tự đầu tiên trong bảng chữ cái Latin để viết.

Để viết tiểu sử, trước hết, Quân sẽ soạn thảo trước \(n\) từ chỉ chứa \(5\) kí tự đầu tiên trong bảng chữ cái Latin. Cậu ấy muốn chọn một tập các từ, sao cho số lượng phần tử của tập là lớn nhất, để viết ra được một dòng tiểu sử thú vị. (nếu trong tập có \(2\) từ giống nhau nhưng chỉ số khác nhau, thì cách chọn này vẫn hợp lệ).

Một dòng tiểu sử được gọi là thú vị và chỉ khi tồn tại một chữ cái nào đó có số lần xuất hiện nhiều hơn tổng số các kí tự còn lại.

Ví dụ, tiểu sử chứa 3 từ "bac", "aaada", "e" gọi là thú vị vì "a" xuất hiện \(5\) lần, lớn hơn tổng số các kí tự còn lại là \(2 + 1 + 1 = 4\).

Cho trước \(n\) từ chỉ chứa các kí tự "a", "b", "c", "d", "e". Hãy chọn ra một tập có số lượng các từ lớn nhất, sao cho các từ đó tạo thành một tiểu sử thú vị. Nếu tất cả các tập từ có thể chọn không có tập hợp nào tạo ra được tiểu sử thú vị, in ra \(0\).

Input

Dòng đầu tiên là số nguyên dương \(n\) - số lượng từ Quân sẽ soạn thảo.

\(n\) dòng tiếp theo, mỗi dòng chứa một xâu kí tự, xâu đó chỉ chứa các kí tự "a", "b", "c", "d", "e".

Output

Một dòng chứa kết quả bài toán.

Example

Test 1

Input
3
bac
aaada
e
Output
3

Test 2

Input
3
aba
abcde
aba
Output
2

Scoring

Gọi \(m\) là tổng độ dài của các từ. Đảm bảo rằng trong tất cả các test, \(m <= 4.10^5\).

Có \(25\%\) số test có \(n <= 10, m <= 10000\).

Có \(25\%\) số test có \(n <= 20, m <= 100000\).

\(50\%\) số test có lại \(n <= 2.10^5, m <= 4.10^5\).

Dễ

Kiểm tra dãy ngoặc đúng

100 điểm 55% AC 6 đã giải

root

Trong hệ thống máy tính lượng tử của tương lai, dữ liệu được mã hóa dưới dạng các chuỗi ký tự đặc biệt, chủ yếu sử dụng các ký hiệu ngoặc đơn. Một chuỗi được coi là Hợp lệ (Valid) nếu nó thỏa mãn các quy tắc cân bằng nghiêm ngặt.

Một Dãy Ngoặc Đúng (Correct Bracket Sequence - CBS) hay còn gọi là Dãy Ngoặc Hợp Lệ, được định nghĩa đệ quy như sau:

  • Chuỗi rỗng ("") là một Dãy Ngoặc Đúng.
  • Nếu \(S\) là một Dãy Ngoặc Đúng, thì chuỗi \((\text{S})\) cũng là một Dãy Ngoặc Đúng.
  • Nếu \(S\) và \(T\) đều là Dãy Ngoặc Đúng, thì chuỗi \(ST\) (nối \(S\) và \(T\)) cũng là một Dãy Ngoặc Đúng.
  • Mọi Dãy Ngoặc Đúng chỉ có thể được xây dựng từ các quy tắc trên.

Ví dụ: ()(), (()), "" là các Dãy Ngoặc Đúng; nhưng )(, ((), )(() thì không.

Bạn được giao một chuỗi \(S\) chỉ chứa các ký tự ngoặc đơn '(' và ')' có độ dài \(N\). Nhiệm vụ của bạn là kiểm tra xem chuỗi \(S\) có phải là một Dãy Ngoặc Đúng hay không.

Input

  • Dòng đầu tiên chứa số nguyên \(N\) (\(1 \le N \le 10^6\)) --- độ dài của chuỗi.
  • Dòng thứ hai chứa chuỗi \(S\) có độ dài \(N\), chỉ bao gồm các ký tự '(' và ')'.

Output

In ra YES nếu chuỗi \(S\) là một Dãy Ngoặc Đúng. Ngược lại, in ra NO.

Example

Test 1

Input
2
()
Output
YES

Test 2

Input
6
(())()
Output
YES

Test 3

Input
5
()(((
Output
NO

Test 4

Input
6
(())))
Output
NO
Dễ

Phân tích hàm băm

100 điểm 0% AC 0 đã giải

root

Sau cuộc tấn công tàn khốc của các cỗ máy, dự án YoRHa mới quyết định triển khai một hệ thống an ninh tối tân. Hệ thống này sử dụng các thuật toán mã hóa tiên tiến để đảm bảo thông tin quan trọng luôn được bảo mật. Trọng tâm của hệ thống an ninh này là một cơ chế băm độc đáo, trong đó mỗi mẩu dữ liệu được biểu diễn bằng phép toán toán học \(x^y \pmod{p}\), với \(p\) là một số nguyên tố. Hệ thống này biến đổi mọi đầu vào thành một "chữ ký", một chuỗi dường như ngẫu nhiên mà chỉ các máy chủ của YoRHa mới có thể giải mã.

Tuy nhiên, khi cuộc chiến với các cỗ máy kéo dài, các nhà điều hành bắt đầu lo ngại. Điều gì sẽ xảy ra nếu nhiều mẩu thông tin khác nhau, khi được xử lý bởi thuật toán băm này, lại tạo ra cùng một chữ ký? Điều này có thể dẫn đến một thất bại thảm khốc trong hệ thống an ninh, khi dữ liệu quan trọng bị ghi đè hoặc mất do các vụ "va chạm" trong hàm băm. Để ngăn chặn điều này, nhà điều hành 21O được giao một nhiệm vụ quan trọng: tính toán xem có bao nhiêu đầu vào khác nhau có thể băm thành cùng một chữ ký, cho mọi kết quả đầu ra có thể.

Với mỗi \(k = 1, 2, 3, \ldots, p-1\), nhà điều hành phải phân tích có bao nhiêu cặp số nguyên \((a, b)\) với \(1 \le a, b \le p-1\) thỏa mãn \(a^b \equiv k \pmod{p}\). Bằng cách xác định có bao nhiêu tổ hợp khác nhau tạo ra cùng một kết quả băm, họ có thể đánh giá rủi ro va chạm và điều chỉnh các giao thức an ninh cho phù hợp. Cuộc phân tích này trở thành một cuộc chạy đua với thời gian, vì sự toàn vẹn của hệ thống liên lạc và lưu trữ dữ liệu của YoRHa phụ thuộc vào việc thực hiện thành công nhiệm vụ này. Vận mệnh của cuộc chiến có thể phụ thuộc vào khả năng của nhà điều hành trong việc đảm bảo hệ thống an ninh luôn bất khả xâm phạm.

Input

  • Một số nguyên duy nhất \(p\) (\(2 \le p < 100,000\)). Đảm bảo rằng \(p\) là một số nguyên tố.

Output

  • Một dòng duy nhất chứa \(p-1\) số nguyên. Số thứ \(k\) là số cặp \((a, b)\) thỏa mãn \(a^b \equiv k \pmod{p}\).

Example

Test 1

Input
3
Output
3 1 
Note
  • Với \(k=1\): Có 3 cặp số \((a, b)\) thỏa mãn \(a^b \equiv 1 \pmod{3}\): \((1, 1), (1, 2), (2, 2)\).
  • Với \(k=2\): Có 1 cặp số \((a, b)\) thỏa mãn \(a^b \equiv 2 \pmod{3}\): \((2, 1)\).

Test 2

Input
13
Output
40 4 16 8 10 4 4 10 16 8 4 20 

Scoring

  • Subtask 1 (30 điểm): \(p \le 500\).
  • Subtask 2 (30 điểm): \(p \le 10000\).
  • Subtask 3 (40 điểm): Không có ràng buộc gì thêm.
Dễ

Đếm đường đi trên lưới

100 điểm 0% AC 0 đã giải

root

Xét một lưới \(N \times N\) mà các ô vuông có thể có bẫy. Không được phép di chuyển vào ô có bẫy.
Nhiệm vụ của bạn là tính số đường đi từ ô trên cùng bên trái (ô \((1, 1)\)) đến ô dưới cùng bên phải (ô \((N, N)\)). Bạn chỉ có thể di chuyển sang phải hoặc xuống dưới.

Input

  • Dòng đầu tiên chứa một số nguyên \(N\): kích thước của lưới (\(1 \le N \le 1000\)).
  • \(N\) dòng tiếp theo mô tả lưới. Mỗi dòng có \(N\) ký tự: . là ô trống, và * là ô có bẫy.

Output

  • In ra số đường đi modulo \(10^9+7\).

Example

Test 1

Input
4
....
.*.*
.*..
....
Output
3
Xem thêm