Đ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

Biến đổi mã gen

100 điểm

Giáo sư 3M vừa mới phát hiện ra sinh vật mới chưa từng xuất hiện trước đây. Sinh vật này rất
kì lạ khi có thể thay đổi mã gen của mình. Mã gen của sinh vật được biển diễn dưới dạng một
dãy các phần tử số nguyên. Được biết trong vòng đời của sinh vật có thể biến đổi duy nhất \(1\)
lần trong đoạn gen từ \(L\) đến \(R\) bằng cách thay đổi các số nguyên trong trên dãy thành \(a_L\).
Giáo sư muốn biết với mã gen đã cho sinh vật này có thể biến đổi thành bao nhiêu mã gen
khác nhau. Các bạn hãy giúp giáo sư 3M nhé.

Input

Vào từ file văn bản GCC.INP:

  • Dòng đầu ghi số nguyên dương \(n\) \((1 \leq n \leq 10^6)\)
  • Dòng thứ \(2\) ghi \(n\) số nguyên \(a_i\) \((1 \leq |a_i| \leq 10^6)\).

Output

Ghi ra file văn bản GCC.OUT:

  • Gồm một số nguyên dương duy nhất là số mã gen khác nhau có thể.

Example

Test 1

Input
4 1
1 2 3
Output
4
Note

Các mã gen là:

  • 1 1 2 3
  • 1 1 2 2
  • 1 1 1 3
  • 1 1 1 1

Scoring

  • \(10\%\) số test tương ứng với \(10\%\) số điểm của \(n \leq 500\).
  • \(20\%\) số test tương ứng với \(20\%\) số điểm của \(n \leq 10^3\), \(1 \leq a_i \leq 9\).
  • \(20\%\) số test tương ứng với \(20\%\) số điểm có các phần tử \(a_i\) phân biệt.
  • \(20\%\) số test tương ứng với \(20\%\) số điểm của \(n \leq 10000\).
  • \(30\%\) số test còn lại tương ứng với \(30\%\) số điểm của bài không có ràng buộc gì thêm

root

Phân chia túi hàng

100 điểm

Một đoàn xe chở hàng đang di chuyển qua một tuyến đường dài. Trên tuyến đường này có \(n\) trạm kiểm soát, được đánh số liên tục từ \(1\) đến \(n\) từ trái sang phải, trạm kiểm soát thứ \(i\) đang giữ một kiện hàng có trọng lượng \(a_{i}\) kg.

Để không bị CSGT phạt vì quá giới hạn trọng tải của xe, bạn không thể vận chuyển nhiều hơn \(s\) đơn vị hàng hóa trong một chuyến xe. Bạn cần chia số hàng hóa thành nhiều chuyến sao cho:

  • Mỗi chuyến xe không chở quá \(s\) đơn vị hàng, và mỗi chuyến xe sẽ vận chuyển các kiện hàng nằm trên một đoạn liên tiếp các trạm kiểm soát.

  • Chi phí vận chuyển của một chuyến xe phụ thuộc vào kiện hàng nặng nhất trong chuyến đó và số lượng kiện hàng có trong chuyến. Cụ thể hơn, chi phí vận chuyển một chuyến chính là tổng của trọng lượng kiện hàng lớn nhất và số lượng kiện hàng trong chuyến trừ \(1\).

  • Tổng chi phí vận chuyển của toàn bộ đoàn xe phải được tối ưu sao cho nhỏ nhất.

Input

  • Dòng đầu tiên chứa hai số nguyên \(n, s\) \((1 \leq n \leq 2 \times 10^6, 1 \leq s \leq 10^{18})\) --- số lượng trạm kiểm soát và tải trọng tối đa của mỗi chuyến đi.
  • Dòng thứ hai chứa \(n\) số nguyên \(a_1, a_2, ..., a_n\) \((1 \leq a_i \leq \min(s, 10^9))\) --- trọng lượng của kiện hàng cần vận chuyển tại mỗi trạm.

Output

In ra một số nguyên duy nhất --- tổng chi phí vận chuyển tối thiểu để hoàn thành nhiệm vụ.

Example

Test 1

Input
6 7
3 1 5 2 1 4
Output
15
Note

Một cách tối ưu để chia thành các chuyến đi như sau: [3, 1], [5], [2, 1, 4]

Scoring

  • \(20\%\) số test tương ứng với \(20\%\) số điểm có \(n \leq 20\)
  • \(20\%\) số test tương ứng với \(20\%\) số điểm có \(n \leq 100\)
  • \(20\%\) số test tương ứng với \(20\%\) số điểm có \(n \leq 5000\).
  • \(20\%\) số test tương ứng với \(20\%\) số điểm có \(n \leq 2 \times 10^5\).
  • \(20\%\) số test tương ứng với \(20\%\) số điểm có \(n \leq 2 \times 10^6\).

root

Đếm nút cây tiền tố

100 điểm

Trong một dự án nghiên cứu về nén dữ liệu tại trung tâm siêu máy tính LQD, các nhà khoa học đang làm việc với một tập hợp \(S\) gồm \(n\) chuỗi nhị phân đặc biệt. Các chuỗi này chỉ chứa hai loại ký tự: 'a' và 'b'.

Một chuỗi \(A\) được gọi là một biến thể hoán vị của chuỗi \(B\) nếu chuỗi \(A\) có thể được tạo ra bằng cách thay đổi thứ tự các ký tự của chuỗi \(B\). Các nhà nghiên cứu quyết định mở rộng tập hợp \(S\) thành một tập hợp khổng lồ \(S'\) theo quy tắc: Với mỗi chuỗi \(S_i\) trong tập \(S\) ban đầu, tất cả các biến thể hoán vị của nó sẽ được thêm vào \(S'\).

Để quản lý tập hợp \(S'\), một cấu trúc dữ liệu cây tiền tố (Trie) được xây dựng. Nhắc lại, Trie là một cây có gốc, trong đó mỗi cạnh được gán một ký tự. Mỗi nút trong cây đại diện cho một tiền tố của một hoặc nhiều chuỗi trong tập hợp. Nút gốc đại diện cho chuỗi rỗng.

Nhiệm vụ của bạn là tính toán tổng số nút có trong cây Trie đại diện cho tất cả các chuỗi thuộc tập \(S'\). Vì kết quả có thể rất lớn, hãy đưa ra đáp án theo mô-đun \(10^9 + 7\).

Input

Dòng đầu tiên chứa số nguyên \(n\) (\(1 \le n \le 20\)) --- số lượng chuỗi ban đầu trong tập \(S\).

Trong \(n\) dòng tiếp theo, dòng thứ \(i\) chứa chuỗi \(S_i\) (\(1 \le |S_i| \le 10^5\)). Các chuỗi chỉ bao gồm các ký tự 'a' và 'b'.

Output

In ra một số nguyên duy nhất là tổng số nút của cây Trie sau khi chia lấy dư cho \(10^9 + 7\).

Example

Test 1

Input
1
abaa
Output
14

Test 2

Input
2
abb
aaa
Output
11

Test 3

Input
4
aa
ab
bb
aba
Output
10

Scoring

  • Subtask 1 (20% số điểm): \(|S_i| \le 20\).
  • Subtask 2 (20% số điểm): \(n = 1, |S_i| \le 10^3\).
  • Subtask 3 (15% số điểm): \(n = 2, |S_i| \le 10^3\).
  • Subtask 4 (10% số điểm): \(|S_i| \le 10^3\).
  • Subtask 5 (15% số điểm): \(n = 1, |S_i| \le 10^5\).
  • Subtask 6 (10% số điểm): \(n = 2, |S_i| \le 10^5\).
  • Subtask 7 (10% số điểm): Không có ràng buộc gì thêm.

root

Đếm chia hết

100 điểm

Cho ba số nguyên dương \(a, b, c\) và một giới hạn \(n\). Hãy đếm số lượng số nguyên dương không lớn hơn \(n\) sao cho số đó chia hết cho một trong ba số \(a, b, c\).

Input

Gồm một dòng duy nhất chứa bốn số nguyên lần lượt là \(n, a, b\) và \(c\) \((1 \le a, b, c \le n \le 10^{12})\).

Output

Gồm một số duy nhất là số lượng số thỏa mãn yêu cầu.

Example

Test 1

Input
10 2 5 7
Output
7
Xem thêm