Đ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

Alice và xi xử lý

100 điểm

Alice là một kĩ sư đang làm việc trên một loại vi xử lí mới. Bộ vi xử lí làm việc trên tập số nguyên không âm \(S\) (các số có thể được xuất hiện nhiều lần) để mô phỏng sự sống trong Matrix. Ban đầu tập \(S\) là rỗng, bộ vi xử lí có các loại truy vấn sau:

  • Truy vấn dạng: \(0\ x\), truy vấn này thêm một số nguyên \(x\) vào \(S\) (\(0 \le x \le 10^5\)). Nếu giá trị \(x\) đã có trong \(S\) thì truy vấn này vẫn được thực hiện;

  • Truy vấn dạng: \(1\ x\), truy vấn này xóa một số \(x\) khỏi \(S\) (\(0 \le x \le 10^5\)). Nếu giá trị \(x\) không thuộc \(S\) thì truy vấn này không cần làm gì. Nếu giá trị \(x\) xuất hiện nhiều lần trong \(S\) thì truy vấn này chỉ xóa đi một lần;

  • Truy vấn dạng: \(2\ a\), truy vấn này thay đổi cả tập \(S\) với sự ảnh hưởng của \(a\) (\(0 \le a \le 10^5\)). Cụ thể, với mỗi \(x\) thuộc \(S\), thay bằng \(x \oplus a\). Phép \(\oplus\) là phép toán \(XOR\).

  • Truy vấn dạng: \(3\ k\), truy vấn này tính tổng \(k\) phần tử nhỏ nhất trong \(S\) (\(0 \le k \le |S|\)).

Để kiểm tra trước khi đưa vào sử dụng, Alice muốn bạn lập trình để xử lí chính xác các truy vấn trên.

Input

  • Dòng đầu tiên chứa số nguyên dương \(Q\);
  • Mỗi dòng trong \(Q\) dòng tiếp theo chứa hai số nguyên mô tả một truy vấn như trên. Các số trên cùng một dòng cách nhau bởi dấu cách.

Output

Với mỗi truy vấn loại \(3\), in ra tổng của \(k\) phần tử nhỏ nhất trong \(S\) trên một dòng.

Example

Test 1

Input
6
0 1
2 2
0 3
3 2
2 2
3 1
Output
6
1

Scoring

  • Có \(25\) điểm thỏa mãn: \(Q \le 1000\);
  • Có \(25\) điểm khác thỏa mãn: \(Q \le 10^5\) và không có truy vấn loại \(2\);
  • Có \(25\) điểm khác thỏa mãn: \(Q \le 10^5\) và \(k \le 10\);
  • Có \(25\) điểm còn lại thỏa mãn: \(Q \le 10^5\).

root

Nghi thức kho báu vàng

100 điểm

Trong một vương quốc cổ đại, có một kho báu được chia thành nhiều ngăn, mỗi ngăn chứa một số lượng vàng khác nhau. Số lượng vàng trong mỗi ngăn được biểu diễn bởi dãy số \(a\).

Để mở được kho báu, người thừa kế phải thực hiện một nghi thức đặc biệt. Trong mỗi nghi thức, số lượng vàng trong mỗi ngăn sẽ được thay đổi bằng ước số chung lớn nhất của số vàng trong ngăn đó và ngăn bên cạnh (ngăn bên cạnh ngăn cuối cùng là ngăn đầu tiên).

Ví dụ, nếu \(a = [16,24,10,5]\) thì sau một nghi lễ \(a\) mới \(=[gcd(16,24),\ gcd(24,10),\ gcd(10,5),\ gcd(5,16)] =[8,2,5,1]\).

Nghi thức này được lặp đi lặp lại cho đến khi số lượng vàng trong tất cả các ngăn trở nên bằng nhau. Ít nhất cần thực hiện bao nhiêu nghi thức để mở được kho báu?

Input

  • Dòng đầu tiên chứa số nguyên dương \(t\) \((1 \leq t \leq 10^4)\) biểu thị số lượng bộ câu hỏi.
  • Dòng đầu tiên của mỗi bộ câu hỏi, chứa số nguyên dương \(n\) \((2 \leq n \leq 2 \times 10^5)\) biểu thị số lượng ngăn.
  • Dòng thứ hai chứa \(n\) số nguyên dương \(a_1, a_2, ..., a_n\) \((1 \leq a_i \leq 10^6)\) biểu thị số lượng vàng ban đầu trong mỗi ngăn.
  • Tổng \(n\) qua các bộ câu hỏi không vượt quá \(2 \times 10^5\).

Output

  • In ra \(t\) số nguyên là số bước cần thiết để mở kho báu tương ứng với mỗi bộ câu hỏi.

Example

Test 1

Input
5
4
16 24 10 5
4
42 42 42 42
3
4 6 4
5
1 2 3 4 5
6
9 9 27 9 9 63
Output
3
0
2
1
1

Scoring

  • \(30\%\) số test có \(n\) và tổng \(n \leq 1000\), kết quả luôn \(\leq 10000\).
  • \(30\%\) số test có \(n\) và tổng \(n \leq 5 \times 10^4\).
  • \(40\%\) số test có \(n\) và tổng \(n \leq 2 \times 10^5\).

root

Xâu

100 điểm

Cho một xâu \(s\). Cho biết trong xâu chứa bao nhiêu kí tự khác nhau.

Input

Dữ liệu vào: từ tệp XAU.INP chứa xâu \(s\). Số lượng kí tự của xâu không quá \(10^6\).

Output

Kết quả: ghi ra tệp XAU.OUT số lượng kí tự khác nhau.

Example

Test 1

Input
Huyen Huong Son
Output
9
Note

Ghi chú: xâu trong ví dụ trên có 9 kí tự khác nhau là H, S, e, g, n, o, u, y, và dấu cách.

Scoring

  • Có \(50\%\) số điểm có số lượng kí tự của xâu không quá \(10000\).
  • Còn \(50\%\) số điểm còn lại không có ràng buộc gì thêm.

root

Ước bội 5

100 điểm

Cho \(n\) số nguyên. Với mỗi số, hãy cho biết số lượng ước của nó.

Ví dụ, nếu \(x = 18\), câu trả lời đúng là \(6\) vì các ước của nó là \(1,2,3,6,9,18.\)

Input

  • Dòng đầu tiên chứa một số nguyên \(n\)

  • Sau đó là \(n\) dòng, mỗi dòng chứa một số nguyên \(x\)

Output

  • Đối với mỗi số nguyên, in ra số lượng ước của nó.

Example

Test 1

Input
3
16
17
18
Output
5
2
6
Note
  • \(1 \leq n \leq 10^5\)

  • \(1 \leq x \leq 10^6\)

Scoring

  • \(35.29\%\) số điểm có \(n \leq 1000, a_{i} \leq 10000\).
Xem thêm