TLEoj Contest #03 - Giá trị MEX cuối cùng

huyhau6a2

Trong dãy số A, ta định nghĩa mex(A) là số nguyên dương nhỏ nhất không xuất hiện trong dãy A. VD: mex(2,1,3,69,420)=4; mex(2,3,4,5)=1

Bạn được cho một dãy số a gồm n phần tử có giá trị 1 và m phần tử có giá trị 2. Bạn được phép thực hiện hành động sau: Chọn 1 dãy con của dãy a bao gồm tối thiểu hai phần tử, sau đó xóa tất cả phần tử trong dãy con đó, cuối cùng thêm lại vào dãy a giá trị mex của dãy con đã xóa vừa rồi. Hành động này được thực hiện đến khi còn chính xác một phần tử. Dễ dàng nhận thấy sau một số lượng hành động nhất định dãy sẽ còn chính xác một phần tử. Nhiệm vụ của bạn là tìm ra giá trị tối đa của phần tử cuối cùng sau khi dãy còn đúng 1 phần tử.

Input, Output và Subtasks

Input
  • Dòng thứ nhất gồm 1 số t là số testcase (1\le t\le 10^4)
  • Sau đó là t dòng, mỗi dòng nhập 2 số n,m (0\le n,m\le 10^{18},n+m>0)
Output
  • Xuất ra t dòng, mỗi dòng gồm 1 số tương ứng với kết quả từng testcase.
Scoring
  • Subtask 1 (20\%): t\le 5;n,m\le 10
  • Subtask 2 (20\%): n,m\le 10^3
  • Subtask 3 (60\%): Không có ràng buộc gì thêm

Sample

Input
1
1 1
Output
3

TLEoj Contest #02 - Bit coloring

huyhau6a2

huyhau6a2 có một bảng kích thước n\times m, các hàng được đánh số từ 1 đến n theo chiều từ trên xuống, các cột được đánh số từ 1 đến m theo chiều từ trái sang phải. Ô nằm giao giữa hàng i\ (1\le i\le n) và cột j\ (1\le j\le m) gọi là ô (i,j). Ban đầu, toàn bộ bảng là màu trắng (màu 0), huyhau6a2 thực hiện q thao tác tô màu như sau:

  • 1\ k\ v: Tô đè tất cả các ô (x,y) thỏa mãn x & y=k thành màu v (& là ký hiệu của phép toán bit AND) (0\le k\le 10^9,1\le v\le 10^9)
  • 2\ k\ v: Tô đè tất cả các ô (x,y) thỏa mãn x | y=k thành màu v (| là ký hiệu của phép toán bit OR (0\le k\le 10^9,1\le v\le 10^9)
  • 3\ k\ v: Tô đè tất cả các ô (x,y) thỏa mãn x\oplus y=k thành màu v (\oplus là ký hiệu của phép toán bit XOR) (0\le k\le 10^9,1\le v\le 10^9)

Nhiệm vụ của bạn là xác định bảng mà huyhau6a2 nhận được sau khi thực hiện q thao tác.

Input, Output và Subtasks

Input
  • Dòng thứ nhất gồm 3 số n,m,q (1\le n,m\le 1000,1\le q\le 10^6)
  • Sau đó là q dòng, mỗi dòng nhập 1 trong các loại truy vấn như trên
Output
  • Xuất ra n dòng, mỗi dòng gồm m giá trị tương ứng là bảng kết quả
Subtasks
  • Subtask 1 (40\%): n,m,q\le 400.
  • Subtask 2 (40\%): Tất cả truy vấn thuộc duy nhất 1 loại
  • Subtask 3 (20\%): Không có giới hạn gì thêm.

Sample

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

TLEoj Contest #02 - Thành phố Đà Lạt

huyhau6a2

Mạng lưới giao thông của thành phố Đà Lạt bao gồm n địa điểm và m con đường một chiều, mỗi con đường nối hai địa điểm với nhau.

Để cải thiện khả năng thu hút khách của thành phố, chính quyền quyết định chia m con đường thành hai nhóm, sao cho với mỗi nhóm đều thỏa mãn tính chất: nếu từ địa điểm i có thể đi đến địa điểm j bằng các con đường trong một nhóm, thì sẽ không thể quay lại địa điểm i từ địa điểm j bằng các con đường trong cùng nhóm đó. Điều này sẽ buộc các du khách đi thăm mỗi địa điểm không quá một lần.

Bạn hãy chỉ ra một cách chia m con đường bất kỳ thỏa mãn điều kiện nêu trên.

Input, Output và Subtasks

Input
  • Dòng thứ nhất gồm 1 số t là số testcase (1\le t\le 100)
  • Sau đó là t block được định dạng như sau:
    • Dòng đầu gồm 2 số n và m (1\le n\le 100,1 \le m \le n \times (n-1))
    • m dòng tiếp theo, mỗi dòng gồm 2 số u_i và v_i (u_i\ne v_i) cho biết có đường đi một chiều từ u_i đến v_i. Dữ liệu đảm bảo các đường đi không trùng nhau, nghĩa là không có 2 giá trị i,j thỏa mãn u_i=u_j,v_i=v_j (nhưng có thể có hai giá trị i, j sao cho u_i = v_j, v_i = u_j)
    • Input mẫu có chứa một số dòng trống, để bạn dễ phân biệt các block với nhau (nhưng trong test chấm thì sẽ không có những dòng trống này)
Output
  • Xuất ra t dòng tương ứng với kết quả từng testcase, mỗi dòng xuất ra m giá trị 1 hoặc 2, nếu giá trị thứ i là 1 tức là bạn chia con đường thứ i vào phần 1, ngược lại bạn chia con đường thứ i vào phần 2. Nếu có nhiều kết quả cùng thỏa mãn, chỉ cần in ra một kết quả bất kỳ.
Scoring
  • Subtask 1 (20\%): t=1;n,m\le 20
  • Subtask 2 (80\%): Không có ràng buộc gì thêm

Sample

Input
2

3 3
1 2
3 1
2 3

3 3
1 2
1 3
2 3
Output
221
111

TLEoj Contest #02 - Mon đi PQ

huyhau6a2, i_love_moonlight, mondellbit00bit

"Trong một thế giới ảo tưởng của mondellbit009"

mondellbit009 sau khi bị mẹ ép đi PQ chơi, mẹ cho mondellbit009 n đồng để đi du lịch. Khi chuẩn bị đi du lịch thì mondellbit009 có thể đặt vé theo 4 cách như sau:

  • Sử dụng A đồng cho vé đi tàu 1 lần
  • Sử dụng B đồng cho vé đi tàu 1 tuần
  • Sử dụng C đồng cho vé đi taxi 1 lần
  • Sử dụng D đồng cho vé đi taxi 1 tuần

mondellbit009 đang phân vân không biết nên mua 1 vé tàu và 1 vé taxi như thế nào để vừa với túi tiền của mình. Các bạn hãy giúp mondellbit009 nhé!

Input, Output và Subtasks

Input
  • Dòng thứ nhất gồm 1 số t là số testcase (1\le t\le 10^4)
  • Sau đó là t dòng, mỗi dòng gồm 5 số n,A,B,C,D tương ứng với các giá trị trong từng testcase (1\le n,A,B,C,D\le 10^9)
Output
  • Xuất ra t dòng tương ứng với kết quả từng testcase:
    • Nếu có thể mua vé, hãy xuất ra 1 giá trị là tổng chi phí nhỏ nhất để mua vé
    • Ngược lại, hãy xuất -1

Sample

Input
3
4 2 2 2 2
2 2 2 2 2
4 1 2 2 1
Output
4
-1
2
Note

Trong testcase 1, Mon có thể mua 1 trong 2 vé đi tàu và 1 trong 2 vé đi taxi. Với cách chọn nào cũng sẽ tốn tổng chi phí là 2+2=4
Trong testcase 2, Mon có thể tốn chi phí tối thiểu là 4 nhưng Mon chỉ có 2 đồng nên kết quả là -1 ;(
Trong testcase 3, Mon có thể chọn vé đi tàu 1 lần và vé đi taxi 1 tuần để được chi phí là 1+1=2

TLEoj Contest #02 - Chiếu hết bằng Vua và Xe

Sunlight

(Bài toán này yêu cầu bạn phải hiểu về luật chơi, các thuật ngữ cơ bản và cách đánh dấu các ô của bộ môn cờ vua)

(Nếu bạn muốn kiểm tra code của mình với bộ test khác hơn test ví dụ, bạn có thể sử dụng bảng phân tích của https://www.chess.com/analysis?tab=analysis để có được kết quả chính xác (độ sâu khoảng 40 sẽ cho kết quả đúng))

Bạn được cho một thế cờ có hai quân Vua của hai bên và một quân Xe. Với mỗi trường hợp Trắng đi trước hoặc Đen đi trước, bạn cần xác định xem:

  1. Thế cờ được cho có hợp lệ hay không trong trường hợp đó.
  2. Kết quả của ván cờ như thế nào trong trường hợp đó nếu cả hai bên cùng chơi tối ưu.
  3. Nếu có một bên chiến thắng, hãy cho biết bên đó thắng trong bao nhiêu nước.
Input, Output và Scoring
Input (bàn phím)
  • Dòng đầu tiên gồm một số nguyên dương t là số thế cờ bạn cần phải giải quyết (t \le 400).
  • 8 \times t dòng tiếp theo, mỗi dòng là một chuỗi gồm 8 ký tự và mỗi nhóm 8 dòng mô tả một thế cờ. Các ký tự trên các dòng có thể là:
    • . nếu ô cờ là ô cờ trống.
    • K nếu ô cờ là quân Vua Trắng và k nếu ô cờ là quân Vua Đen.
    • R nếu ô cờ là quân Xe Trắng và r nếu ô cờ là quân Xe Đen.
  • Dữ liệu đầu vào đảm bảo mỗi bên có đúng một quân Vua và trên bàn cờ có đúng một quân Xe (có đúng một chữ K hoa, một chữ k thường và một chữ R hoặc r trong mỗi 8 dòng ở input).
  • Input mẫu có chứa một số dòng trống, để bạn dễ phân biệt các thế cờ với nhau (nhưng trong test chấm thì sẽ không có những dòng trống này)
Output (màn hình)
  • Gồm 2 \times t dòng, dòng thứ 2 \times i - 1 là đánh giá về thế cờ thứ i nếu Trắng đi trước và dong thứ 2 \times i là đánh giá về thế cờ thứ i khi Đen đi trước. Mỗi dòng gồm ba chuỗi ký tự cách nhau theo một dấu cách.
    • Nếu thế cờ hợp lệ, chuỗi ký tự đầu tiên sẽ là Valid. Ngược lại, chuỗi ký tự đầu tiên sẽ là Invalid.
    • Nếu thế cờ không hợp lệ, chuỗi ký tự thứ hai sẽ là -1. Ngược lại, chuỗi ký tự thứ hai sẽ là Black trong trường hợp Đen thắng, White trong trường hợp Trắng thắng và Draw trong trường hợp hai bên hòa nhau.
    • Nếu thế cờ không hợp lệ hoặc hai bên hòa nhau, chuỗi ký tự thứ ba sẽ là -1. Ngược lại, chuỗi ký tự thứ ba sẽ là số nước đi bên thắng cần để chiến thắng ván cờ.
Scoring
  • Điểm của một test sẽ được chia đều cho các dòng. Với mỗi dòng, nếu kết quả của bạn khớp với đáp án ở chuỗi ký tự đầu tiên, bạn được 40\% số điểm; nếu kết quả của bạn khớp với đáp án ở hai chuỗi ký tự đầu tiên, bạn được thêm 20\% số điểm, và nếu kết quả của bạn hoàn toàn khớp với đáp án, bạn được thêm 40\% số điểm.
Sample
Input (bàn phím)
3

K.......
........
k.......
........
........
........
........
.r......

........
......K.
........
...k..R.
........
........
........
........

.K....r.
........
.k......
........
........
........
........
........
Output (màn hình)
Valid Draw -1
Valid Black 3
Invalid -1 -1
Valid White 15
Valid Black 0
Invalid -1 -1
Note
  • Ở thế cờ đầu tiên (hình minh họa 1, nhưng đổi quân Đen thành quân Trắng và ngược lại) và Đen đi trước, Đen có thể đi Xe đến c1, buộc Vua Trắng di chuyển sang ô b8. Đen đi Vua b6, Trắng đi Vua a8 (bắt buộc) và Đen đi Xe c8 chiếu hết (Đen mất 3 nước để chiến thắng).
  • Ở thế cờ thứ ba (hình minh họa 2, nhưng đổi quân Đen thành quân Trắng và ngược lại), Vua Trắng đã bị chiếu hết do đó nếu thế cờ này là lượt Đen đi thì không hợp lệ, còn đến lượt Trắng thì Đen sẽ thắng ngay lập tức (mất 0 nước).

Quốc tế thiếu nhi 2023 - Six

huyhau6a2 rất thích số 6, vì đơn giản là trong tên của cậu ta có chứa số 6 :)

Một số được cho là số yêu thích đối với huyhau6a2 nếu trong số đó có đúng một chữ số 6

Nhiệm vụ của bạn là kiểm tra xem 1 số có phải là số mà huyhau6a2 yêu thích không

Input, Output và Subtasks

Input
  • Dòng đầu tiên gồm số t chỉ số testcase (1\le t\le 100)
  • Sau đó là t dòng, mỗi dòng gồm duy nhất 1 số x là số mà bạn cần kiểm tra (1\le x\le 10^9)
Output
  • Với testcase thứ i, xuất Yes nếu số nhập vào trong testcase đó là số mà huyhau6a2 yêu thích, ngược lại xuất No

Sample

Input
3
69
420
1662023
Output
Yes
No
No

Quốc tế thiếu nhi 2023 - One

Bạn được cho dãy số a gồm n phần tử. Nhiệm vụ của bạn là tìm ra giá trị lớn nhất và nhỏ nhất của a_i-a_j (1\le i,j\le n).

Input, Output và Subtasks

Input
  • Dòng đầu tiên gồm số n cho biết độ dài của dãy a (1\le n\le 100)
  • Sau đó là n dòng, dòng thứ i cho biết giá trị của a_i (|a_i|\le 10^6)
Output
  • Xuất ra 2 giá trị trong 2 dòng, dòng thứ nhất xuất ra hiệu tối đa, dòng thứ hai xuất ra hiệu tối thiểu

Sample

Input
2
3
3
Output
0
0

Quốc tế thiếu nhi 2023 - Xor

Sunlight

Bạn được cho một dãy số nguyên. Nhiệm vụ của bạn là tính tổng XOR của dãy.

Input, Output và Subtasks

Input
  • Một dòng duy nhất là dãy số nguyên cần tính. Mỗi số nguyên cách nhau một dấu cách, dãy có không quá 10^4 số nguyên và các số nguyên không vượt quá 10^9.
Output
  • Một dòng duy nhất là tổng xor của dãy.

Sample

Input
1 2 3 4 5 6 7 8 9 10
Output
11

Quốc tế thiếu nhi 2023 - Gift

Để chuẩn bị quà cho ngày 1/6, thầy Quang đã chuẩn bị rất nhiều kẹo.

Vào 8h tối, các em học sinh đã có mặt đầy đủ tại trường THPT Chuyên Lê Quý Đôn, thầy bắt đầu phát kẹo, với số kẹo mà người thứ i được chia là một số nguyên dương a_i.

Tuy vậy, trong lúc chuẩn bị chia, có 1 em học sinh là moi_hoc_code do vô ý đã làm nhòe đi một số giá trị a_i. Thầy Quang không nhớ chính xác các giá trị a_i, chỉ nhớ dãy a mình đã ghi là 1 dãy đối xứng.

Dãy số a độ dài n được coi là đối xứng khi với mọi giá trị i (1\le i\le n), a_i=a_{n-i+1}

Nhiệm vụ của bạn là điền lại các giá trị a_i sao cho thỏa mãn điều kiện thầy Quang đưa ra, và xuất ra số lượng kẹo tối thiểu thầy có thể chia, hoặc cho rằng điều đó là không thể

Input, Output và Subtasks

Input
  • Dòng đầu tiên gồm số n cho biết độ dài của dãy a (1\le n\le 100)
  • Sau đó là n dòng, dòng thứ i cho biết giá trị của a_i, nếu a_i=-1, tức là giá trị đó bị nhòe, ngược lại a_i là một giá trị nguyên dương và không quá 10^6
Output
  • Nếu không có cách điền nào thỏa mãn, xuất -1, ngược lại, xuất ra duy nhất 1 số nguyên dương là tổng số kẹo tối thiểu có thể được chia

Sample

Input
5
-1
2
3
-1
-1
Output
9
Note

Cách điền tối ưu là: 1,2,3,2,1

CAKE (TS10 PTNK 2023)

Cho một bánh có kích thước N\times M ô vuông. Trên bánh có 4\times K quả dâu. Bạn được biết vị trí của các quả dâu. Được phép cắt 2 nhát, 1 nhát ngang, 1 nhát dọc sao cho chia bánh thành 4 phần. Mà 4 phần này phải có số lượng dâu bằng nhau. Có bao nhiêu cách cắt như thế?

Input, output and subtasks:

Input CAKE.INP:
  • Dòng đầu tiên ghi 3 số nguyên dương N,M,K (2\leq M,N\leq 10^9,1\leq K\leq 5\cdot 10^5)
  • 4 \cdot K dòng tiếp theo chứa tọa độ của các quả dâu.
Output CAKE.OUT:
  • Gồm 1 dòng ghi số nguyên là số cách cắt thõa mãn.
Subtask:
  • 60\% số test có giới hạn N,M\leq 10^4, K\leq 4\cdot 10^4.
  • 40\% số test còn lại không có giới hạn gì thêm.

Sample:

Sample input CAKE.INP:
3 4 1
2 2
1 4
3 2
3 4
Sample output CAKE.OUT:
2
Giải thích:

Mô tả input mẫu (mỗi ô đánh dấu dựa vào các ký tự 1,0, ô ghi số 1 là ô có chứa dâu):

0001
0100
0101

SUMK (TS10 PTNK 2023)

Sunlight

Cho mảng A gồm N phần tử. Mảng 2 chiều S có kích thước N\cdot N với S_{i,j}=A_i\cdot A_j. Đếm số lượng hình chữ nhật trên S có tổng các phần tử bằng K

Input, output and subtasks:

Input SUMK.INP:
  • Dòng đầu tiên ghi số nguyên dương N (1\le N\le 10^5)
  • Dòng tiếp theo ghi N số nguyên dương: A_1,A_2,A_3,\dots,A_N (1\le A_i\le 10^5)
  • Dòng cuối cùng ghi số nguyên dương K (1\le K\le 10^9)
Output SUMK.OUT:
  • Gồm 1 dòng ghi số nguyên là số lượng hình chữ nhật trên S có tổng các phần tử bằng K
Subtask:
  • 40\% số test có giới hạn N\le 100, A_i \le 100, K \le 10^6.
  • 30\% số test có giới hạn N\le 8000,A_i\le 100,K\le 10^6.
  • 30\% số test còn lại không có giới hạn gì thêm.

Sample:

Sample input SUMK.INP:
5
2 4 1 5 3
30
Sample output SUMK.OUT:
12

MARBLE (TS10 PTNK 2023)

Cho mảng A gồm N phần tử, mảng B gồm M phần tử (1\leq N,M\leq 10^5). Hãy tạo ra một dãy số không giảm: A_1\leq A_2\leq \dots\leq A_i\leq B_j\leq B_{j+1} \dots\leq B_M.

Lưu ý: Dãy bạn tạo là dãy gồm i phần tử đầu tiên của mảng A (1\leq i\leq n) và j phần tử cuối của mảng B (1\leq j\leq M).

Input, output và subtasks:

Input MARBLE.INP
  • Dòng đầu tiên ghi số nguyên dương N.
  • Dòng thứ hai ghi N số nguyên: A_1, A_2,\dots,A_N.
  • Dòng thứ ba ghi số nguyên dương M.
  • Dòng thứ tư ghi M số nguyên: B_1, B_2,\dots,B_M.

Giá trị của các phần tử của mảng A,B là số nguyên nằm trong khoảng [-10^9,10^9]

Output MARBLE.OUT
  • Gồm một dòng ghi số nguyên là kích thước lớn nhất trong các dãy tìm được.
Subtask
  • 40\% số test N,M\leq 100
  • 30\% số test còn lại N,M\leq 1000
  • 30\% số test còn lại không có giới hạn gì thêm.

Sample:

Sample input
3
1 4 9
4
5 2 4 5
Sample output
4
Giải thích

Có hai dãy tìm được là:
1 2 4 5
1 4 4 5

Tọa độ (TS10 QNi 2023)

huyhau6a2

Rô bốt thám hiểm sao Hỏa đang ở điểm có tọa độ (0,0) nhận được dòng lệnh điều khiển từ Trái Đất. Dòng lệnh chỉ chứa các ký tự thuộc tập ký tự {E,S,W,N}, mỗi ký tự là một lệnh di chuyển với quãng đường bằng 1 đơn vị độ dài. Lệnh E di chuyển về hướng Đông, tức là nếu rô bốt đang ở tọa độ (x,y) thì sau khi thực hiện lệnh E rô bốt sẽ ở tọa độ (x+1,y). Lệnh S di chuyển về hướng Nam, tức là nếu rô bốt đang ở tọa độ (x,y) thì sau khi thực hiện lệnh S rô bốt sẽ ở tọa độ (x,y-1). Lệnh W di chuyển về hướng Tây, tức là nếu rô bốt đang ở tọa độ (x,y) thì sau khi thực hiện lệnh W rô bốt sẽ ở tọa độ (x-1,y). Lệnh N di chuyển về hướng Bắc, tức là nếu rô bốt đang ở tọa độ (x,y) thì sau khi thực hiện lệnh N rô bốt sẽ ở tọa độ (x,y+1).

Hãy các định tọa độ của rô bốt sau khi thực hiện lệnh di chuyển nhận được

Hình vẽ bên minh họa việc di chuyển của rô bốt với dòng lệnh ENENWWWS. Sau khi thực hiện, rô bốt sẽ tới tọa độ (-1,1)

Input, Output và Subtasks

Input: (coor.inp)
  • Gồm một dòng chứa xâu S môn tả dòng lệnh. Các ký tự của xâu S là các chữ cái in hoa và thuộc tập ký tự {E,S,W,N}. Độ dài của xâu S thuộc đoạn từ 1 đến 10^5
Output: (coor.out)
  • Hai số nguyên tương ứng là hoành độ và tung độ của rô bốt sau khi thực hiện lệnh di chuyển.
Subtasks
  • Subtask 1 (30\%): Độ dài của xâu S không quá 100
  • Subtask 2 (30\%): Tất cả ký tự của xâu S đều giống nhau, tức là tất cả ký tự của xâu S đều là E, S, W hoặc N
  • Subtask 3 (40\%): Không có giới hạn gì thêm.

Sample

Input (coor.inp)
ENENWWWS
Output (coor.out)
-1 1

Đoán số (TS10 QNi 2023)

Sunlight

An và Chi đang chơi một trò chơi đoán số như sau:

An nghĩ ra 4 số nguyên dương: số đầu tiên anh ta chọn là 1 số nguyên dương bất kỳ, mỗi số tiếp theo bằng số trước đó cộng với cùng một hằng số dương nào đó. Sau đó An đưa cho Chi một mảnh giấy mà anh ta đã viết 3 số được chọn ngẫu nhiên trong 4 số. Chi sẽ thắng nếu đoán đúng số còn thiếu. Bạn hãy giúp Chi tìm các số có thể là số còn thiếu

Một số có thể là số còn thiếu nếu nó là số nguyên dương và nó cùng với 3 số ghi trên mảnh giấy có thể sắp xếp theo một thứ tự nào đó sao cho mỗi số kể từ thứ hai trở đi, bằng số liền kề trước đó cộng với cùng một hằng số dương nào đó

Input, Output và Subtasks

Input: (gues.inp)
  • Gồm 1 dòng chứa 3 số nguyên a,b,c (1\le a,b,c\le 10^9) là 3 số được ghi trên mảnh giấy mà An đưa cho Chi. Dữ liệu vào đảm bảo rằng số còn thiếu luôn tồn tại
Output: (gues.out)
  • Chứa các số có thể là số còn thiếu, theo thứ tự tăng dần
Subtasks
  • Subtask 1 (40\%): b-a=c-b>0
  • Subtask 2 (30\%): 1\le a,b,c\le 10^3
  • Subtask 3 (30\%): Không có giới hạn gì thêm.

Sample

Input (gues.inp)
4 6 8
Output (gues.out)
2 10

Sample

Input (gues.inp)
10 1 4
Output (gues.out)
7

Ước số (TS10 QNi 2023)

Sunlight

Để chuẩn bị cho cuộc thi quan trọng nhất năm, An đã học cách tìm số ước của một số và nhanh chóng hiểu được các thuật toán khác nhau. Sau đó, trong quá trình tự luyện tập, An quyết định tìm hiểu mối quan hệ giữa một số và số ước của nó.

Cho 2 số nguyên dương n và k, hãy tính số cặp số nguyên (x,y) với 1\le x\le y\le n và thỏa mãn đẳng thức:

k\times d(x)\times d(y)=x\times y

Trong đó d(x),d(y) lần lượt là số ước nguyên dương của x và y

Bạn hãy giúp An tính số cặp (x,y) như vậy

Input, Output và Subtasks

Input: (divi.inp)
  • Gồm một dòng chứa 2 số nguyên dương n và k (1\le n\le 3\times 10^5,1\le k\le 10^9)
Output: (divi.out)
  • Một số nguyên là số cặp số nguyên (x,y) cần tìm
Subtasks
  • Subtask 1 (20\%): 1\le n\le 100.
  • Subtask 2 (20\%): 1\le n\le 600
  • Subtask 3 (20\%): 1\le n\le 4000
  • Subtask 4 (20\%): 1\le n\le 10^4
  • Subtask 5 (20\%): Không có giới hạn gì thêm.

Sample

Input (divi.inp)
8 3
Output (divi.out)
2
Note

Có 2 cặp (x,y) thỏa mãn là (3,8) và (6,8). Chúng ta hãy kiểm tra 2 cặp này:

  • Với cặp (x,y)=(3,8). Số x=3 có 2 ước nguyên dương là 1 và 3, do đó d(x)=2. Số y=8 có 4 ước nguyên dương là 1,2,4,8, do đó d(y)=4. Vì k\times d(x)\times d(y)=3\times 2\times 4=24 và x\times y=3\times 8=24 nên k\times d(x)\times d(y)=x\times y
  • Với cặp (x,y)=(6,8). Số x=6 có 4 ước nguyên dương là 1,2,3,6, do đó d(x)=4. Số y=8 có 4 ước nguyên dương là 1,2,4,8, do đó d(y)=4. Vì k\times d(x)\times d(y)=3\times 4\times 4=48 và x\times y=6\times 8=48 nên k\times d(x)\times d(y)=x\times y

Sample

Input (divi.inp)
25 9
Output (divi.out)
6
Note

Các cặp số thỏa mãn: (9,9), (9,18),(9,24),(18,18),(18,24),(24,24)

TLEoj Contest #01 - Cặp số đầy đủ

huyhau6a2

Bạn được cho một hoán vị a độ dài n. Một cặp số (l,r) được gọi là cặp số đầy đủ nếu với mọi l\le i\le r thì l\le a_i\le r.

Bạn được cho q truy vấn, mỗi truy vấn gồm 2 số l,r. Nhiệm vụ của bạn là với mỗi truy vấn, hãy đếm số lượng cặp số (u,v)\ (l\le u\le v\le r) thỏa mãn (u,v) là cặp số đầy đủ

Input, Output và Subtasks

Input
  • Dòng đầu tiên gồm 2 số nguyên dương n và q (1 \le n,q \le 10^5).
  • Dòng tiếp theo gồm n số nguyên dương a_1,a_2,\dots,a_n\ (1\le a_i\le n). Các giá trị a_i đôi một phân biệt
  • q dòng tiếp theo, mỗi dòng gồm 2 giá trị l,r (1\le l\le r\le n)
Output
  • Với mỗi truy vấn, xuất ra kết quả tương ứng trong một dòng
Subtasks
  • Subtask 1 (25\%): n\le 1000.
  • Subtask 2 (25\%): q=1,l=1,r=n
  • Subtask 3 (50\%): Không có ràng buộc gì thêm

Sample

Input
4 4
1 2 4 3
1 4
1 2
2 4
3 4
Output
6
3
3
1
Note
  • Các cặp số đầy đủ: (1,1), (1,2), (1,4), (2,2), (2,4), (3,4)

Số đẹp

huyhau6a2

Số đẹp là số có tổng bình phương các chữ số của nó (trong dạng biểu diễn thập phân) là một số nguyên tố. Ví dụ: 23 là một số đẹp vì 2^2+3^2=13 là một số nguyên tố.

Dãy các số đẹp lần lượt là: 11,12,14,16,21,23,25,27,32,38,\dots. Các số đẹp được đánh số thứ tự tăng dần theo giá trị bắt đầu số thứ nhất là 11, số thứ hai là 12, ..., số thứ mười là 38

Yêu cầu: Cho số nguyên dương N. Hãy tìm số đẹp thứ N

Input, Output và Subtasks

Input
  • Dòng thứ nhất gồm số t chỉ số testcase (1\le t\le 10^5)
  • t dòng tiếp theo, mỗi dòng gồm duy nhất một số n (1\le n\le 10^{18})
Output
  • Xuất ra t dòng, dòng thứ i xuất ra kết quả tương ứng của dòng thứ i
Subtasks
  • Subtask 1 (20\%): n\le 100.
  • Subtask 2 (20\%): n\le 10^4.
  • Subtask 3 (20\%): n\le 10^6.
  • Subtask 4 (20\%): t\le 100.
  • Subtask 5 (10\%): t\le 10^4.
  • Subtask 6 (10\%): Không có giới hạn gì thêm.

Sample

Input
10
1
2
3
4
5
6
7
8
9
10
Output
11
12
14
16
21
23
25
27
32
38

TLE-oj Cup Round 12 - Lật giấy

huyhau6a2

Một bài toán đến từ Bình Dương

huyhau6a2 đang chơi lật giấy. Giả sử tờ giấy là ma trận 2^x\cdot 2^y, giá trị ở ô (i,j) là a_{i,j}. huyhau6a2 có thể thực hiện lật giấy theo một trong 4 cách: Lật trái, phải, trên, dưới. Cụ thể có thể liệt kê như sau:

  • Lật dọc: Ma trận 2^x\cdot 2^y đổi thành ma trận 2^x\cdot 2^{y-1} (y>0). Có thể xem ví dụ như trên:

    1 2|3 4
    5 6|7 8
    

    Việc lật này lại chia làm lật trái hoặc lật phải:

    • Lật trái: Với mọi giá trị i,j (1\le i\le 2^x,1\le j\le 2^{y-1}), cập nhật a_{i,2^y-j+1}=a_{i,2^y-j+1}-a_{i,j}. Sau đó, bỏ phần ma trận trái
    • Lật phải: Với mọi giá trị i,j (1\le i\le 2^x,1\le j\le 2^{y-1}), cập nhật a_{i,j}=a_{i,j}-a_{i,2^y-j+1}. Sau đó, bỏ phần ma trận phải

    Sau khi bỏ ma trận, y sẽ bị trừ đi 1

    Hãy xét ví dụ như trong hình trên, việc lật trái làm thay đổi ma trận thành:

    0 0|3-2 4-1    =>    0 0|1 3    =>    1 3
    0 0|7-6 8-5    =>    0 0|1 3    =>    1 3
    

  • Lật ngang: Ma trận 2^x\cdot 2^y đổi thành ma trận 2^{x-1}\cdot 2^y (x>0). Có thể xem ví dụ như trên:

    1 2 3 4
    _______
    5 6 7 8
    

    Việc lật này lại chia làm lật trên hoặc lật dưới:

    • Lật trên: Với mọi giá trị i,j (1\le i\le 2^{x-1},1\le j\le 2^y), cập nhật a_{2^x-i+1,j}=a_{2^x-i+1,j}-a_{i,j}. Sau đó, bỏ phần ma trận trên
    • Lật dưới: Với mọi giá trị i,j (1\le i\le 2^{x-1},1\le j\le 2^y), cập nhật a_{i,j}=a_{i,j}-a_{2^x-i+1,j}. Sau đó, bỏ phần ma trận dưới

    Sau khi bỏ ma trận, x sẽ bị trừ đi 1

    Hãy xét ví dụ như trong hình trên, việc lật trên làm thay đổi ma trận thành:

    0   0   0   0      =>    0 0 0 0    
    _______________          _______      =>    4 4 4 4
    5-1 6-2 7-3 8-4    =>    4 4 4 4    
    

Việc lật này diễn ra đến khi ra ma trận 1\cdot 1 (tức x=y=0) thì thôi. Gọi kết quả đó là v

Gọi f(M,x,y) (với x,y là kích thước, M là ma trận cho trước kích thước 2^x\cdot 2^y) là tổng tất cả các giá trị v trong tất cả khả năng lật.

huyhau6a2 thấy lật giấy có một tờ thì chán quá nên sẽ chuẩn bị rất nhiều tờ giấy để lật. huyhau6a2 sẽ chuẩn bị ba giá trị n,m,k. Các tờ giấy sẽ là tất cả ma trận M kích thước 2^n\cdot 2^m, với các giá trị nằm trong đoạn [1,k]. Tổng cộng có k^{2^{n+m}} bảng khác nhau. Nhiệm vụ của bạn là tính tổng tất cả f(M,n,m) có thể tạo được.

Input, Output và Subtasks

Input: (FOLD.inp)
  • Gồm 3 số n,m,k (0\le n,m\le 10^{18}, 1\le k\le 10^{18})
Output: (FOLD.out)
  • In ra một số duy nhất là kết quả bài toán. Vì kết quả có thể rất lớn nên hãy xuất kết quả sau khi mod\ 10^9+7
Subtasks
  • Subtask 1 (25\%): n,m,k\le 2
  • Subtask 2 (25\%): n,m\le 10^6
  • Subtask 3 (25\%): n,m\le 10^{12}
  • Subtask 4 (25\%): Không có ràng buộc gì thêm

Sample

Input (FOLD.inp)
0 0 3
Output (FOLD.out)
6
Note
  • Có 3 ma trận M kích thước 1\cdot 1 có thể tạo ra, là 1, 2, 3. Các ma trận trên đều kích thước 1\cdot 1 nên không phải lật gì cả. Kết quả là 1+2+3=6

TLE-oj Cup Round 12 - Cặp nghịch thế

Sunlight

Với một dãy số a_1,a_2,\dots,a_n, một cặp số (i,j) được gọi là cặp nghịch thế khi và chỉ khi 1\le i<j\le n và a_i>a_j

Bạn được cho một dãy số a và q truy vấn, mỗi truy vấn gồm hai số nguyên dương u,v, và bạn cần phải tính toán số cặp nghịch thế của dãy a nếu đổi giá trị của a_u và a_v

Input, Output và Subtasks

Input: (RCNT.inp)
  • Dòng đầu tiên gồm hai số nguyên dương n,q\ (n,q\le 10^5)
  • Dòng thứ hai gồm n số nguyên dương a_1,a_2,\dots,a_n. Dữ liệu đầu vào đảm bảo dãy a là một hoán vị có n phần tử (hay nói cách khác, a_i\ne a_j với mọi cặp i\ne j và 1\le a_i\le n)
  • q dòng tiếp theo, mỗi dòng gồm hai số nguyên dương u,v biểu thị cho một truy vấn
Output: (RCNT.out)
  • Gồm q dòng, dòng thứ i là kết quả của truy vấn thứ i
Subtasks
  • Subtask 1 (25\%): n\le 50
  • Subtask 2 (25\%): n\le 500
  • Subtask 3 (25\%): n\le 5000
  • Subtask 4 (25\%): Không có ràng buộc gì thêm

Sample

Input (RCNT.inp)
4 3
2 3 1 4
2 4
1 3
1 4
Output (RCNT.out)
3
1
5
Note
  • Ban đầu: a=(2,3,1,4)
  • Truy vấn 1: a=(2,4,1,3) có các cặp nghịch thế (1,3), (2,3), (2,4)
  • Truy vấn 2: a=(1,3,2,4) có cặp nghịch thế (2,3)
  • Truy vấn 3: a=(4,3,1,2) có các cặp nghịch thế (1,2), (1,3), (1,4), (2,3), (2,4)

Pre TS10 2023 #01 - Tổng ước chung lớn nhất

Sunlight

Cho hai số nguyên dương n, m. Tính tổng các giá trị gcd(i, j) với mọi 1 \le i \le n và 1 \le j \le m.

Input, Output và Subtasks

Input: (SGCD.inp)
  • Một dòng duy nhất gồm hai số nguyên dương n, m (n, m \le 2 \times 10^6)
Output: (SGCD.out)
  • Một số nguyên duy nhất là kết quả bài toán.
Subtasks
  • Subtask 1 (40\%): n, m \le 2000
  • Subtask 2 (30\%): n, m \le 2 \times 10^5.
  • Subtask 3 (30\%): Không có giới hạn gì thêm.

Sample

Input (SGCD.inp)
3 4
Output (SGCD.out)
16
Note
  • gcd(1, 1) = gcd(1, 2) = gcd(1, 3) = gcd(1, 4) = 1
  • gcd(2, 1) = gcd(2, 3) = 1, gcd(2, 2) = gcd(2, 4) = 2.
  • gcd(3, 1) = gcd(3, 2) = gcd(3, 4) = 1, gcd(3, 3) = 3.