Đ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

Thử thách GCD của Alice và Bob

100 điểm

Alice và Bob là hai người bạn thân, nhưng họ luôn thích thách thức nhau bằng các bài toán hóc búa. Vào một buổi chiều mưa, Bob đã đưa ra một thử thách mới và cực kỳ khó nhằn cho Alice. Anh ta đưa cho Alice một dãy số và yêu cầu cô phải giải quyết một loạt các truy vấn phức tạp. Đây không phải là bài toán đơn giản, vì nó liên quan đến kiến thức chuyên sâu về lý thuyết số và đặc biệt là ước số chung lớn nhất (GCD).

Bob, một "bậc thầy thách đố", đã nghĩ ra thử thách này sau nhiều ngày suy nghĩ. Alice, được biết đến như một "nữ hoàng toán học", đã chấp nhận ngay lập tức với quyết tâm chứng minh rằng không có thử thách nào có thể làm khó cô. Tuy nhiên, để vượt qua bài toán này, Alice cần đến sự giúp đỡ từ bạn --- một nhà lập trình tài ba và có kiến thức sâu về thuật toán.

Cho một dãy số nguyên \(a_1, a_2, \ldots, a_n\), và có \(q\) truy vấn \(x_1, x_2, \ldots, x_q\). Đối với mỗi truy vấn \(x_i\), bạn cần đếm số lượng cặp \((l, r)\) sao cho \(1 \leq l \leq r \leq n\) và \(\gcd(a_l, a_{l+1}, \ldots, a_r) = x_i\).

Trong đó, \(\gcd(v_1, v_2, \ldots, v_n)\) là ước số chung lớn nhất của các số \(v_1, v_2, \ldots, v_n\).

Nếu bạn thành công, bạn sẽ giúp Alice chứng minh rằng cô ấy xứng đáng với danh hiệu "Nữ hoàng toán học", và Bob sẽ phải chịu thua trong thử thách này!

Input

  • Dòng đầu tiên chứa một số nguyên \(n\) \((1 \leq n \leq 10^5)\) --- độ dài của dãy số.
  • Dòng thứ hai chứa \(n\) số nguyên \(a_1, a_2, \ldots, a_n\) \((1 \leq a_i \leq 10^9)\) --- các phần tử trong dãy số.
  • Dòng thứ ba chứa một số nguyên \(q\) \((1 \leq q \leq 3 \times 10^5)\) --- số lượng truy vấn.
  • \(q\) dòng tiếp theo, mỗi dòng chứa một số nguyên \(x_i\) \((1 \leq x_i \leq 10^9)\) --- giá trị GCD mà Bob đang tìm kiếm.

Output

Với mỗi truy vấn, in ra số lượng cặp \((l, r)\) thỏa mãn yêu cầu trong một dòng riêng.

Example

Test 1

Input
3
2 6 3
5
1
2
3
4
6
Output
1
2
2
0
1

Scoring

  • Có \(25\%\) số test tương ứng với \(25\%\) số điểm có \(n, q \leq 100\).
  • Có \(25\%\) số test tương ứng với \(25\%\) số điểm có \(n, q \leq 500\).
  • Có \(25\%\) số test tương ứng với \(25\%\) số điểm có \(q \leq 3\).
  • Có \(25\%\) số test tương ứng với \(25\%\) số điểm còn lại không có ràng buộc gì thêm.

root

Xóa cạnh đồ thị

100 điểm

Thành phố Quân sống là một thành phố có \(n\) quận và có \(n - 1\) con đường có trọng số nối giữa hai thành phố khác nhau, sao cho từ thành phố bất kì có thể đi sang tất cả các thành phố khác. Khi tận thế đến, có tất cả \(n - 1\) thiên thạch rơi lần lượt vào \(n - 1\) con đường theo từng thời điểm, thời điểm \(i\) thiên thạch thứ \(i\) sẽ phá hủy con đường có trọng số nhỏ nhất trong các con đường chưa bị phá hủy.

Yêu cầu : Ngay sau thời điểm thứ \(i\), có bao nhiêu cặp thành phố có thể đi lại với nhau (nói cách khác, đếm số cặp \((u, v)\) \((u < v)\), sao cho tồn tại một con đường nối giữa \(u\) và \(v\)).

Input

Dòng thứ nhất là số nguyên dương \(n\) là số thành phố \((n \leq 500000)\).

\(n - 1\) dòng tiếp theo gồm ba số \(u, v, w\) mô tả đường đi và trọng số của đường đi \((u, v \leq n, w \leq 10^9)\)

Đảm bảo trọng số của các cạnh là đôi một phân biệt.

Output

Gồm một dòng chứa \(n - 1\) số, mỗi số cách nhau một dấu cách, số thứ \(i\) mô tả kết quả ngay sau thời điểm thứ \(i\).

Example

Test 1

Input
4
1 2 3
1 3 2
1 4 1
Output
3 1 0 

Scoring

\(20\%\) số điểm có \(n \leq 100\)

\(30\%\) số điểm có \(n \leq 1000\)

\(50\%\) số điểm còn lại không có ràng buộc gì thêm.

root

Dãy phân số

100 điểm

Sau một thời gian nghiên cứu, Nam đã đưa ra một phương pháp mã hóa các số nguyên thông qua dãy các phân số. Với số nguyên dương \(k\), một dãy hữu hạn các phân số \(a_i\) được định nghĩa như sau:

  • \(a_1 = \frac{1}{k}\);
  • \(a_i = \frac{x_i}{y_i} = \frac{x_{i-1}+1}{y_{i-1}-1}\) khi \(i > 1\) với \(\frac{x_i}{y_i}\) là một phân số tối giản;
  • Khi \(a_i\) đạt đến một giá trị nguyên \(n\), dãy phân số kết thúc (\(y_i = 1\)).

Nam mã hóa hàm số \(f(k) = n\). Ví dụ: với \(k=20\) có dãy biến đổi sau:
$ \frac{1}{20} \to \frac{2}{19} \to \frac{3}{18} = \frac{1}{6} \to \frac{2}{5} \to \frac{3}{4} \to \frac{4}{3} \to \frac{5}{2} \to \frac{6}{1} = 6 $

Kết quả \(f(20) = 6\).

Yêu cầu: Cho số nguyên dương \(x\), bạn hãy giúp Nam tính \(f(x^3)\).

Input

  • Dòng đầu tiên chứa số nguyên dương \(T\) (\(T \le 100\)) là số lượng giá trị \(x\) cần tính \(f(x^3)\);
  • Mỗi dòng trong số \(T\) dòng tiếp theo chứa một số nguyên dương \(x\).

Output

  • Gồm \(T\) dòng, mỗi dòng là giá trị \(f(x^3)\) tương ứng với số nguyên dương \(x\) trong dữ liệu vào.

Example

Test 1

Input
2
3
4
Output
6
12

Scoring

  • Số test ứng với 50% số điểm của bài có: \(x \le 100\);
  • Số test khác ứng với 30% số điểm của bài có: \(x \le 10^4\);
  • Số test còn lại ứng với 20% số điểm của bài có: \(x \le 10^6\).

root

Dãy ngoặc đúng 2

100 điểm

Nhiệm vụ của bạn là tính toán số lượng chuỗi dấu ngoặc hợp lệ có độ dài \(n\) khi một tiền tố của chuỗi đã cho trước.

Input

  • Dòng đầu tiên chứa một số nguyên \(n\) (\(1 \le n \le 10^6\)), là độ dài của chuỗi.
  • Dòng thứ hai chứa một chuỗi có \(k\) ký tự, là tiền tố của chuỗi dấu ngoặc hợp lệ (\(1 \le k \le n\)).

Output

  • In ra số lượng chuỗi hợp lệ modulo \(10^9+7\).

Example

Test 1

Input
6
(()
Output
2
Note

Có hai chuỗi hợp lệ có thể được tạo ra:

  • (())()
  • (()())
Xem thêm