Đ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

Tổng chữ số

100 điểm

Xây dựng hàm tongChuSo(n) trả về giá trị là tổng các chữ số của \(n\), trong đó \(n\) là số nguyên không âm. Lập trình nhập vào dãy số nguyên và sử dụng hàm tongChuSo để thông báo ra màn hình các số trong dãy cùng tổng các chữ số của chúng.

Input

  • Dòng đầu tiên là số nguyên dương \(N\) (\(1 \leq N \leq 100\)).
  • \(N\) dòng tiếp theo, mỗi dòng là một số nguyên không âm \(a_i\) (\(0 \leq a_i \leq 10^9\)).

Output

\(N\) dòng, mỗi dòng có định dạng a_i: tong_chu_so.

Example

Test 1

Input
6
14 13 5 123 432 2
Output
14: 5
13: 4
5: 5
123: 6
432: 9
2: 2

root

Truy vấn cây

100 điểm

Cho một cây có \(n\) đỉnh, được đánh số từ \(1\) đến \(n\). Mỗi đỉnh có một giá trị ban đầu.

Nhiệm vụ của bạn là xử lý các loại truy vấn sau:

  • Thay đổi giá trị của đỉnh \(s\) thành \(x\).
  • Tìm giá trị lớn nhất trên đường đi giữa hai đỉnh \(a\) và \(b\).

Input

  • Dòng đầu tiên chứa hai số nguyên \(n\) và \(q\) \((1 \leq n, q \leq 2 \cdot 10^5)\) -- số đỉnh của cây và số lượng truy vấn.
  • Dòng thứ hai chứa \(n\) số nguyên \(v_1, v_2, \ldots, v_n\) \((1 \leq v_i \leq 10^9)\) -- giá trị của mỗi đỉnh.
  • \(n-1\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(a\) và \(b\) \((1 \leq a, b \leq n)\) -- biểu thị một cạnh nối giữa hai đỉnh \(a\) và \(b\).
  • \(q\) dòng cuối cùng mô tả các truy vấn, mỗi truy vấn có một trong hai dạng sau:

  • 1 s x: Thay đổi giá trị của đỉnh \(s\) thành \(x\) \((1 \leq s \leq n, 1 \leq x \leq 10^9)\).

  • 2 a b: Tìm giá trị lớn nhất trên đường đi giữa hai đỉnh \(a\) và \(b\) \((1 \leq a, b \leq n)\).

Output

  • In ra \(Q\) số nguyên trên một dòng duy nhất biểu thị giá trị lớn nhất trên đường đi giữa hai đỉnh \(a\) và \(b\).

Example

Test 1

Input
5 3
2 4 1 3 3
1 2
1 3
2 4
2 5
2 3 5
1 2 2
2 3 5
Output
4 3 

root

Bằng trăm bằng mười bằng hai mươi

100 điểm

Viết chương trình, nhập vào ba số nguyên \(a\), \(b\) và \(c\). Nếu \(a = 100\), \(b = 10\), \(c = 20\) thì in ra "Hop le". Ngược lại in ra không hợp lệ.

Example

Test 1

Input
100 10 20
Output
Hop le

Test 2

Input
100 10 30
Output
Khong hop le

root

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

100 điểm

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
Xem thêm