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

Dễ

Liệt kê các ước số

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

staffagent

Cho số nguyên dương \(N\). Hãy liệt kê tất cả các ước số dương của \(N\) theo thứ tự tăng dần.

Input

  • Một dòng chứa số nguyên dương \(N\).

Output

  • Dòng đầu tiên có dạng N co K uoc. Danh sach uoc: trong đó \(N\) là số đã cho và \(K\) là số lượng ước của \(N\).
  • Sau đó là \(K\) dòng, mỗi dòng một ước số, theo thứ tự tăng dần.

Constraints

  • \(1 \le N \le 10^{12}\)

Sample Input 1

28

Sample Output 1

28 co 6 uoc. Danh sach uoc:
1
2
4
7
14
28
Dễ

Liệt kê dãy ngoặc đúng

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

staffagent

Dãy ngoặc đúng được định nghĩa đệ quy: xâu rỗng là dãy ngoặc đúng; nếu \(A\) đúng thì \((A)\) đúng; nếu \(A, B\) đúng thì \(AB\) đúng. Ví dụ ()(()) và ((())) đúng, còn )(, (((())) và )()()( là sai.

Cho \(n\), hãy liệt kê tất cả dãy ngoặc đúng độ dài \(n\).

Input

  • Một số nguyên dương \(n\).

Output

  • Dòng đầu: số lượng dãy ngoặc đúng độ dài \(n\).
  • Các dòng sau: từng dãy theo thứ tự từ điển tăng dần (với ( < )). Nếu không có dãy nào thì chỉ in 0.

Constraints

  • \(1 \le n \le 20\)

Sample Input

6

Sample Output

5
((()))
(()())
(())()
()(())
()()()
Dễ

Liệt kê hoán vị

100 điểm 50% AC 1 đã giải

staffagent

Cho số nguyên dương \(N\). Một hoán vị của \(N\) số \(1, 2, \dots, N\) là một cách sắp xếp \(N\) số đó thành một dãy, mỗi số xuất hiện đúng một lần. Chẳng hạn các hoán vị của \(\{1, 2\}\) là \((1, 2)\) và \((2, 1)\).

Hãy in ra tất cả các hoán vị của \(1, 2, \dots, N\).

Input

Một số nguyên dương \(N\) duy nhất.

Output

Mỗi dòng in một hoán vị (các số cách nhau một dấu cách), theo thứ tự từ điển tăng dần: hoán vị nào có số ở vị trí khác nhau đầu tiên nhỏ hơn thì được in trước.

Constraints

  • \(1 \le N \le 10\)

Sample Input

4

Sample Output

1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
2 1 3 4
2 1 4 3
2 3 1 4
2 3 4 1
2 4 1 3
2 4 3 1
3 1 2 4
3 1 4 2
3 2 1 4
3 2 4 1
3 4 1 2
3 4 2 1
4 1 2 3
4 1 3 2
4 2 1 3
4 2 3 1
4 3 1 2
4 3 2 1
Dễ

Liệt kê chỉnh hợp lặp

100 điểm 50% AC 1 đã giải

staffagent

Cho một tập hợp \(A\) gồm \(n\) số nguyên đôi một khác nhau. Một chỉnh hợp lặp chập \(k\) là một dãy gồm \(k\) phần tử lấy từ \(A\), trong đó mỗi phần tử được phép xuất hiện nhiều lần và thứ tự các phần tử có ý nghĩa (ví dụ \((2,2)\) và \((2,5)\), \((5,2)\) đều là các dãy khác nhau).

Hãy đếm và liệt kê tất cả các chỉnh hợp lặp chập \(k\) của \(A\).

Input

  • Dòng đầu chứa hai số nguyên \(k\) và \(n\).
  • Dòng thứ hai chứa \(n\) số nguyên phân biệt là các phần tử của \(A\), mỗi số có giá trị tuyệt đối không quá \(500\).

Output

  • Dòng đầu tiên in số lượng chỉnh hợp.
  • Mỗi dòng tiếp theo in một chỉnh hợp (các phần tử cách nhau một dấu cách), theo thứ tự từ điển tăng dần (so sánh theo giá trị số).

Constraints

  • \(1 \le k \le n \le 8\)
  • Các phần tử của \(A\) đôi một khác nhau, \(|A_i| \le 500\)
  • Để dữ liệu ra không quá lớn, đảm bảo \(n^k \le 10^6\).

Sample Input

2 3
4 -3 0

Sample Output

9
-3 -3
-3 0
-3 4
0 -3
0 0
0 4
4 -3
4 0
4 4
Xem thêm