Đ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ễ

Mua quà

100 điểm 45% AC 5 đã giải

root

Bạn đang đi tham quan một cửa hàng lưu niệm và được giới thiệu \(n\) món quà. Món quà thứ \(i\) có giá trị là \(a_i\). Bạn muốn chọn mua \(m\) món quà để tặng cho bạn bè. Để đảm bảo tính công bằng, bạn muốn sự chênh lệch giá giữa món quà đắt nhất và món quà rẻ nhất trong số \(m\) món quà được chọn là nhỏ nhất có thể.

Với \(n\) món quà có giá trị tương ứng và số lượng quà cần mua là \(m\), hãy tìm giá trị chênh lệch nhỏ nhất có thể giữa món quà đắt nhất và rẻ nhất trong \(m\) món quà được chọn.

Input

Dữ liệu vào được cung cấp từ đầu vào chuẩn (stdin) theo định dạng sau:

  • Dòng đầu tiên chứa hai số nguyên dương \(n\) và \(m\) (\(2 \le m \le n \le 10^5\)).
  • Dòng thứ hai chứa \(n\) số nguyên dương \(a_1, a_2, \ldots, a_n\) (\(1 \le a_i \le 10^9\)), là giá trị của các món quà.

Output

In ra một số nguyên duy nhất là độ chênh lệch nhỏ nhất giữa món quà có giá trị cao nhất và thấp nhất trong \(m\) món quà được chọn.

Example

Test 1

Input
5 3
3 1 4 9 6
Output
3

Scoring

  • Subtask \(1\) (\(60\%\) số điểm): \(n \le 1000\).
  • Subtask \(2\) (\(40\%\) số điểm): Không có ràng buộc bổ sung.
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