🏔️Twin Peaks Contest #01

Bộ đề bài

# Bài tập Điểm Thời gian: Giới hạn bộ nhớ
1 Rối loạn ám ảnh cưỡng chế 100 (p) 1.67s 256M
2 Giáo Sư Ba Lô 100 (p) 1.0s 256M
3 Mặt nạ nguyên tố 100 (p) 1.67s 512M
4 Đụng hàng bản lật 100 (p) 1.0s 256M
5 Viên ngọc hàm phi 100 (p) 1.67s 256M

1. Rối loạn ám ảnh cưỡng chế

Điểm: 100 (p) Thời gian: 1.67s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Bạn có một thằng bạn thân tên là PhuocThien. PhuocThien không bị gì cả, nó chỉ bị OCD nhị phân. Mỗi khi đi ăn, PhuocThien không nhìn giá tiền bằng hệ thập phân mà toàn bí mật đổi nó sang hệ nhị phân. Nếu con số đó không "đối xứng bit" (ví dụ \(101\), \(1001\)), nó sẽ rơi vào trạng thái hoảng loạn, đổ mồ hôi hột và nhất quyết không chịu trả tiền vì cho rằng con số đó "mất cân đối, xúc phạm thị giác".Để cứu vãn tình bạn và cũng là cứu cái dạ dày của mình, bạn phải trở thành "bác sĩ tâm lý" bất đắc dĩ. Với mỗi hóa đơn PhuocThien đưa ra, bạn cần dùng tốc độ ánh sáng để kiểm tra xem nó có "đẹp" lòng PhuocThien không. Nếu có, hãy hô YES để nó bình tĩnh lại và rút ví, còn không thì chuẩn bị tinh thần ăn NO và tự trả tiền.

Ví dụ:

  • Số 9 có dạng nhị phân là 1001 -> Là đối xứng.
  • Số 5 có dạng nhị phân là 101 -> Là đối xứng.
  • Số 10 có dạng nhị phân là 1010 -> Không đối xứng.

Cho số nguyên \(T\) \((1 ≤ T ≤ 10^5)\) là số truy vẫn, với mỗi truy vấn, nhập vào:
Một số \(N\) \((1 ≤ N ≤ 10^9)\)

Yêu cầu: Hãy in ra màn hình "YES" nếu \(N\) là đối xứng bit, ngược lại in ra "NO".

Example

Test 1

Input
9
11
10
9
5
1
3
7
100
111
Output
NO
NO
YES
YES
YES
YES
YES
NO
NO

2. Giáo Sư Ba Lô

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Protoype và Lam2012 đã hoàn thành công việc của mình và cùng đi sang nước ngoài để tìm hiểu văn hoá mới, tại đây hai người Protoype và Lam2012 được học sinh gọi là "Giáo sư Ba Lô".

Giáo sư Ba Lô vừa phát minh ra một loại "Kẹo Năng Lượng Số Hóa". Mỗi viên kẹo được mã hóa bằng một số nguyên dương \(N\).
Vì để kích thích bộ não thiên tài của các bạn học sinh, số nguyên dương \(N\) được chuyền thành chuỗi nhị phân \(S\) chỉ gồm các ký tự '0' (vị nhạt nhẽo) và '1' (vị ngọt ngào).

Để kích hoạt hiệu ứng đặc biệt của kẹo, học sinh cần tìm ra các Đoạn Mã Cân Bằng. Một đoạn mã được gọi là "Cân Bằng" nếu nó thỏa mãn hai điều kiện khắt khe sau:

  1. Độ dài chẵn: Đoạn mã phải có số lượng ký tự là một số chẵn (để chia đều cho hai người bạn cùng ăn).
  2. Sự công bằng tuyệt đối: Nếu ta cắt đôi đoạn mã đó thành hai phần bằng nhau (nửa đầu và nửa sau), thì số lượng vị ngọt ('1') ở nửa đầu phải bằng đúng số lượng vị ngọt ('1') ở nửa sau.

Ví dụ minh họa:

  • Xét đoạn mã 1001:
    • Độ dài là \(4\) (chẵn).
    • Nửa đầu là 10 có \(1\) số '1'.
    • Nửa sau là 01 có \(1\) số '1'.
    • Vì \(1 = 1\), nên đây là một đoạn mã cân bằng.
  • Xét đoạn mã 1100:
    • Độ dài là \(4\) (chẵn).
    • Nửa đầu là 11 có \(2\) số '1'.
    • Nửa sau là 00 có \(0\) số '1'.
    • Vì \(2 \neq 0\), nên đây KHÔNG phải là đoạn mã cân bằng.

Input

  • Dòng đầu tiên chứa số nguyên dương \(T\) (\(1 \le T \le 1000\)) là số lượng truy vẫn.
  • T dòng tiếp theo chứa các số nguyên \(N\) (\(1 \le N \le 10^6\)).

Output

  • Với mỗi truy vấn in ra "YES" nếu \(N\) là Đoạn Mã Cân Bằng ngược lại in ra "NO".

Example

Test 1

Input
2
9
12
Output
YES
NO
Note

Chuyển sang bit và so sánh đối xứng.

Scoring

  • \(50\%\) số test tương ứng với \(50\%\) số điểm với \(1 \le T \le 1000\).
  • \(50\%\) số test còn lại ứng với \(50\%\) số điểm với \(1000 < T \le 10^6\).

3. Mặt nạ nguyên tố

Điểm: 100 (p) Thời gian: 1.67s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Ngồi trong quán net, Protoype huých vai Lam2012 rồi chỉ vào màn hình: "Mày thấy hội Mặt Nạ Hành Xác này chưa? Bọn nó thề không độc thân, ít nhất phải có 2 ước nguyên tố mới chịu chơi. Nhưng cái nết thì cực hãm: gọi \(P\) là tích và \(S\) là tổng các ước nguyên tố phân biệt, thì \(P\) phải chia hết cho \(S\), mà chia xong kết quả \(Q = P/S\) lại phải lộn về làm một số nguyên tố thì mới chịu chốt đơn." Lam2012 nhìn cái giới hạn \(5 \cdot 10^6\) mà muốn sút cho thằng bạn một phát vì cái tội bắt CPU hóa vàng để duyệt trâu. Protoype chỉ cười khà khà: "Dùng não mà nặn số đi con trai, cái hội biến thái này hiếm tới mức đếm chưa hết bàn tay đâu!"

Yêu cầu: Cho đoạn \([L, R]\), hãy đếm các số nguyên dương \(n\) thỏa mãn:

  • \(n\) có ít nhất \(2\) ước nguyên tố phân biệt.
  • Gọi \(P\) là tích, \(S\) là tổng các ước nguyên tố phân biệt của \(n\). Ta có \(P\) chia hết cho \(S\) và \(Q = P/S\) là một số nguyên tố.

Input

  • Dòng đầu tiên chứa số nguyên \(T\) (\(1 \le T \le 10^5\)) — số lượng bộ test.
  • \(T\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(L\) và \(R\) (\(1 \le L \le R \le 5 \cdot 10^6\)).

Output

  • Với mỗi bộ test, in ra một số nguyên duy nhất là số lượng số "Siêu Hiếm" trong đoạn \([L, R]\).

Example

Test 1

Input
3
1 30
30 30
1 1000
Output
1
1
40
Note

Với \(n = 30\): Các ước nguyên tố phân biệt là \(\{2, 3, 5\}\):

  1. \(S = 2 + 3 + 5 = 10\)
  2. \(P = 2 \cdot 3 \cdot 5 = 30\)
  3. \(Q = 30 / 10 = 3\). Vì \(3\) là số nguyên tố nên \(30\) là số Siêu Hiếm.

Với \(n = 70\): Các ước nguyên tố phân biệt là \(\{2, 5, 7\}\):

  1. \(S = 2 + 5 + 7 = 14\)
  2. \(P = 2 \cdot 5 \cdot 7 = 70\)
  3. \(Q = 70 / 14 = 5\). Vì \(5\) là số nguyên tố nên \(70\) là số Siêu Hiếm.

Các số chỉ có \(1\) ước nguyên tố phân biệt (ví dụ: \(2, 4, 8, 9\)) không được tính vì vi phạm điều kiện 1.

Scoring

  • Subtask \(1\) (\(25\%\) số điểm): \(T \le 10, L, R \le 10^5\).
  • Subtask \(2\) (\(25\%\) số điểm): \(T \le 10, L, R \le 5 \cdot 10^6\).
  • Subtask \(3\) (\(25\%\) số điểm): \(T \le 10^5, L, R \le 10^5\).
  • Subtask \(4\) (\(25\%\) số điểm): Không có ràng buộc gì thêm.

4. Đụng hàng bản lật

Điểm: 100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Prototype rủ PhuocThien và uou chơi một trò hơi “khó chịu”: chọn đúng k số có 2 chữ số sao cho không bị “đụng hàng bản lật” (tức là chọn 12 thì cấm 21, còn mấy số kiểu 33 thì tự loại vì lật lại vẫn là nó), đồng thời tổng các số phải đúng bằng S; nghe thì đơn giản nhưng ba người ngồi tính mãi không ra nên quyết định giao lại cho bạn 😅

Yêu cầu: Cho hai số nguyên dương \(k\) và \(S\). Hãy đếm số lượng tập hợp \(A\) thỏa mãn các điều kiện trên, vì số lượng tập hợp có thể sẽ quá lớn nên ta sẽ lấy kết quả \(mod\) \(10^9 + 7\).

Input

  • Một dòng duy nhất chứa hai số nguyên \(k\) và \(S\) (\(1 \le k \le 40, 10 \le S \le 3500\)).

Output

  • Một số nguyên duy nhất là số lượng tập hợp thỏa mãn.

Example

Test 1

Input
2 35
Output
6
Note

Các cặp \(\{a_1, a_2\}\) có tổng bằng 35, là số có 2 chữ số và không chứa số đảo ngược của nhau:

  1. \(\{10, 25\}\) (số đảo ngược là 01 và 52, không nằm trong tập) -> Thỏa mãn.
  2. \(\{12, 23\}\) (số đảo ngược là 21 và 32, không nằm trong tập) -> Thỏa mãn.
  3. \(\{15, 20\}\) (số đảo ngược là 51 và 02, không nằm trong tập) -> Thỏa mãn.
  4. \(\{17, 18\}\) (số đảo ngược là 71 và 81, không nằm trong tập) -> Thỏa mãn.
  5. \(\{16, 19\}\) (số đảo ngược là 61 và 91, không nằm trong tập) -> Thỏa mãn.
  6. \(\{14, 21\}\) (số đảo ngược là 41 và 21, không nằm trong tập) -> Thỏa mãn.

Scoring

  • Subtask 1 (\(50\%\) điểm): \(k \le 4, S \le 350\).
  • Subtask 2 (\(50\%\) điểm): \(k \le 40, S \le 3500\).

5. Viên ngọc hàm phi

Điểm: 100 (p) Thời gian: 1.67s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Bối cảnh
Tại vương miện số học LQDOJ, Prototype đang canh giữ một dãy gồm \(n\) viên ngọc ma thuật. Mỗi viên ngọc có một mức năng lượng là \(a_i\). Tuy nhiên, phù thủy uou đã thực hiện một lời nguyền cổ xưa lên dãy ngọc này. Lời nguyền mang tên "Sự suy tàn của Phi". Mỗi khi uou vung trượng, năng lượng của các viên ngọc trong một phạm vi nhất định sẽ bị hấp thụ và biến đổi theo quy tắc của hàm Phi Euler. Năng lượng sẽ giảm dần cho đến khi chạm mức tối thiểu là 1 — lúc đó viên ngọc sẽ trở thành một viên đá bình thường và không thể bị hút thêm năng lượng được nữa.
Nhiệm vụ của bạn
Bạn vào vai một nhà tiên tri. Prototype liên tục hỏi bạn về tổng năng lượng còn lại của một đoạn ngọc để chuẩn bị cho cuộc phản công. Bạn phải phản hồi thật nhanh trước khi uou hoàn tất lời nguyền.

Input

  • Dòng 1: \(n\) và \(q\) (\(n, q \le 2 \cdot 10^5\)).
  • Dòng 2: \(n\) số nguyên \(a_1, a_2, \dots, a_n\) (\(a_i \le 10^6\)) — năng lượng ban đầu của \(n\) viên ngọc.
  • \(q\) dòng tiếp theo là các truy vấn:
    • \(1 \ l \ r\) : uou tung lời nguyền, tất cả viên ngọc từ vị trí \(l\) đến \(r\) bị biến đổi: \(a_i = \phi(a_i)\).
    • \(2 \ l \ r\) : Prototype hỏi tổng năng lượng từ vị trí \(l\) đến \(r\).

Output

  • Với mỗi câu hỏi của Protoype, in ra một số nguyên duy nhất là tổng năng lượng.

Example

Test 1

Input
4 3
10 10 10 10
2 1 4
1 2 3
2 1 4
Output
40
28
Note
  1. Ban đầu 4 viên ngọc đều có năng lượng 10. Protoype hỏi tổng, bạn trả lời \(10+10+10+10 = 40\).
  2. Lam2012 tung lời nguyền lên đoạn \([2, 3]\).
    • Viên ngọc thứ 2 và 3 biến thành \(\phi(10) = 4\).
    • Dãy ngọc giờ là: \([10, 4, 4, 10]\).
  3. Protoype hỏi tổng mới: \(10+4+4+10 = 28\).

Scoring

  • Subtask 1 (\(30\%\) điểm): \(n, q ≤ 1000, a ≤ 10^3\).
  • Subtask 2 (\(20\%\) điểm): \(n, q ≤ 2 ⋅ 10^5, a ≤ 2\).
  • Subtask 3 (\(50\%\) điểm): \(n, q ≤ 2 ⋅ 10^5, a ≤ 10^6\).