TRÒ CHƠI DÂN GIAN (Cà Mau 2024)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
trochoi.inp - Tệp ra:
trochoi.out - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
Robocon (HSG12 QT 2023)
Nhằm tăng cường các hoạt động giáo dục STEM, nhà trường tổ chức 1 trò chơi Robocon dành cho học sinh đam mê công nghệ. Ban tổ chức đặt ra luật chơi như sau:
Luật
- Trên 1 lưới ô vuông có kích thước m * n, các hàng được đánh số từ 1 đến m từ trên xuống dưới và các cột được đánh số từ 1 đến n từ trái sang phải.
- Để thắng được trong trò chơi, đội chơi phải điều khiển con robot của mình di chuyển trong các ô trên lưới, xuất phát từ ô (1,1) kết thúc ở ô (m,n).
- Mỗi bước robot chỉ được di chuyển sang bên phải hoặc xuống dưới, tức là nếu robot ở ô (i,j) thì chỉ di chuyển được đến (i,j+1) hoặc (i+1,j)
- Để tăng độ khó BTC quyết định đặt k trướng ngại vật ở ô (i,j) và robot không thể vào ô này.
mondellbit009 và các bạn cùng chơi trò chơi này và muốn thắng, Nên phải xác định các hành trình để về đích.
Yêu cầu:Hãy xác định số hành trình khác nhau để robot có thể về đích theo module 10^9+7. 2 hành trình khác nhau khi có ít nhất 1 ô (i,j) của hành trình này không thuộc hành trình khác.
Input, output và Subtask
Input(ROBOCON.INP)
- Dòng đầu tiên gồm 3 số nguyên m,n và k (n,m\le10^6,K\le2*10^3).
- k dòng tiếp theo, mỗi dòng gồm 2 số nguyên x,y là vị trị có trướng ngại vật.
- dữ liệu đảm bảo ô (1,1) và ô (m,n) không có trướng ngại vật
Input(ROBOCON.OUT)
- In ra tệp ROBOCON.OUT là kết quả của bài toán
Scoring
- Subtask 1 (40\%): 1\le n, m, k \le 1000.
- Subtask 2 (20\%): số điểm 1\le n, m\le 10^5; k = 0.
- Subtask 3 (20\%) số điểm 1\le n, m \le10^5; k = 1.
- Subtask 4 (20\%) số điểm không có giới hạn gì thêm.
Example
Input(ROBOCON.INP)
3 3 2
1 2
3 1
Output(ROBOCON.out)
2
TLEoj Contest #02 - Nhảy về không (bản khó)
Bạn được cho một số nguyên dương n. Với mỗi thao tác, bạn trừ n cho tổng các chữ số của nó. Đếm số thao tác cần thiết để có n = 0.
Bạn phải trả lời q truy vấn như vậy.
P/s: Bài này có giới hạn bộ nhớ là 600000KB (600 nghìn kilobytes).
Input, Output và Subtasks
Input: (bàn phím)
- Dòng đầu tiên là số nguyên dương q \le 10^5.
- q dòng tiếp theo, mỗi dòng là một số nguyên dương n \le 10^{18}.
Output: (màn hình)
- Gồm q dòng, dòng thứ i là kết quả truy vấn thứ i.
Subtasks
- Subtask 1 (12\%): q = 1,n\le 10^9.
- Subtask 2 (12\%): n \le 10^5.
- Subtask 3 (16\%): n \le 10^6.
- Subtask 4 (16\%): n \le 10^8.
- Subtask 5 (24\%): n \le 10^9.
- Subtask 6 (20\%): Không có giới hạn gì thêm.
Sample
Input (bàn phím)
3
18
19
20
Output (màn hình)
2
2
3
Notes
- Ở testcase đầu tiên, 18 - 9 = 9 và 9 - 9 = 0.
- Ở testcase thứ hai, 19 - 10 = 9 và 9 - 9 = 0.
- Ở testcase thứ ba, 20 - 2 = 18, 18 - 9 = 9 và 9 - 9 = 0.
Cờ vua
Bài đầu tiên của và đây là phiên bản reupload :D
Sau một ngày dài mệt mỏi, quyết định chơi cờ vua với bạn cậu là để xả stress.
Sau khi chơi 69420 ván cờ, và đã bắt đầu chán chơi cờ theo kiểu bình thường. Thế là cả hai quyết định dùng bàn cờ n\times m vừa mua ở Ohio ra chơi. Nhà của có rất nhiều quân mã nên cả hai lấy ra để nghịch. Sau đó, vô tình phát hiện ra một bài toán vô cùng thú vị và độc đáo như sau.
Nội dung bài toán
- Trên bàn cờ n \times m, có một quân mã nằm ở ô (1, 1). Hãy tính số nước đi tối thiểu để di chuyển quân mã đó đến ô (i, j).
Bài toán như vậy thì khá là dễ nên đã giải chỉ trong vòng 1 nốt nhạc. Vậy là cậu đã nghĩ ra phiên bản khó hơn như sau.
Nội dung bài toán
- Gọi F(n, m) = \sum_{i = 3}^{n} \sum_{j = 3}^{m} K(i, j) với K(i, j) là hàm để tính số nước đi tối thiểu để di chuyển quân mã từ ô (1, 1) đến ô (i, j). Cho 2 số nguyên dương n, m, hãy tính F(n, m).
- Một quân mã chỉ có thể di chuyển từ ô (i, j) sang ô (i+2, j+1), (i+2, j-1), (i-2, j+1), (i-2, j-1), (i+1, j+2), (i-1, j+2), (i+1, j-2), (i-1, j-2) và không được rời khỏi bàn cờ.
Cả và rất muốn biết đáp án. Tuy nhiên, cả hai đang rất là mệt mỏi. Là một con người tốt bụng, bạn hãy giúp và tìm đáp án nhé.
Input, Output và Scoring
Input
- Số nguyên dương t (1 \le t \le 2 \times 10^4).
- t dòng tiếp theo, mỗi dòng gồm 2 số nguyên dương n, m (3 \le n, m \le 10^{18}).
Output
- Với mỗi dòng, hãy in ra kết quả sau khi chia lấy dư cho 10^9+7.
Scoring
- Subtask 1 (10\%): t = 1; 3 \le n, m \le 10^3.
- Subtask 2 (10\%): 1 \le t \le 2 \times 10^4; 3 \le n, m \le 10^3.
- Subtask 3 (10\%): t = 1; 3 \le n, m \le 10^6.
- Subtask 4 (10\%): 1 \le t \le 2 \times 10^4; 3 \le n, m \le 10^6.
- Subtask 5 (15\%): t = 1; 3 \le n, m \le 10^{12}.
- Subtask 6 (15\%): 1 \le t \le 2 \times 10^4; 3 \le n, m \le 10^{12}.
- Subtask 7 (15\%): t = 1; 3 \le n, m \le 10^{18}.
- Subtask 8 (15\%): 1 \le t \le 2 \times 10^4; 3 \le n, m \le 10^{18}.
Example
Input
2
10 12
5 9
Output
390
74
Mã số (Đắk Nông 2024)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
stdin - Tệp ra:
stdout - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
Chia táo (Khánh Hòa (Nha Trang) 2023)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
CHIATAO.INP - Tệp ra:
CHIATAO.OUT - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
RÚT GỌN PHÂN SỐ (Đắk Lắk 2023)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
RUTGON.INP - Tệp ra:
RUTGON.OUT - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
Đường thẳng (Thanh Hóa 2024)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
CAU4.INP - Tệp ra:
CAU4.OUT - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
Bedan Contest #04 - C - Tiền lì xì
Nên nhớ là có đọc tên file đấy
Trong những ngày Tết, tiền lì xì là một thứ không thể thiếu đối với những bạn nhỏ và hầu như bạn nào cũng thích. Mặc dù đã ăn 14 nồi bánh chưng nhưng mỗi khi Tết đến, lại vô cùng háo hức khi được nhận tiền lì xì và năm nay cũng như vậy.
Hôm nay, đến nhà của bác mình là để chơi. Nhắc tới , mọi người đều biết đến bác là một người siêu giàu khi sở hữu 69 căn biệt thự siêu to khổng lồ và 420 món đồ mua từ shop Thái Công. Thấy người cháu của mình đến chơi, bác liền đem ra cho n phong bì lì xì với phong bì thứ i sẽ có a_i đồng. Để thêm phần thử thách, bác muốn chia n phong bì trên thành k dãy phong bì liên tiếp khác nhau. Khi số, số tiền lì xì nhận được sẽ là tích của tổng từng dãy phong bì trong k dãy trên.
Nhận thấy đây là cơ hội làm giàu, quyết định chấp nhận thử thách của bác đặt ra. Tuy nhiên, cậu không biết phải chia n phong bì trên như thế nào để số tiền cậu nhận được là lớn nhất có thể. Bạn hãy tính giúp nhé.
Lưu ý rằng trong mỗi cách chia, mỗi phong bì chỉ được thuộc duy nhất 1 dãy phong bì lì xì.
Input, Output and Scoring
Input (lixi.inp)
- 2 số nguyên dương n, k (1 \le k \le n \le 200).
- Dãy a gồm n phần tử a_1, a_2, ..., a_n (1 \le a_i \le n).
Output (lixi.out)
- In ra k dòng, dòng thứ i là 1 cặp số (l, r) nghĩa là dãy phong bì thứ i sẽ chứa các phong bì từ vị trí l đến r.
- Nếu có nhiều cách chia có cùng số tiền lớn nhất, hãy in ra một cách chia bất kỳ.
Scoring
- Subtask 1 (10\%): k = 2.
- Subtask 2 (30\%): 1 \le k \le n \le 20.
- Subtask 3 (60\%): Không giới hạn gì thêm.
Test 1
Input (lixi.inp)
5 3
2 3 1 4 2
Output (lixi.out)
1 2
3 4
5 5
Note
- Khi chia như trên, sẽ nhận được số tiền lì xì lớn nhất là 50.
Test 2
Input (lixi.inp)
3 2
1 1 1
Output (lixi.out)
1 2
3 3
Note
- Cách chia (1, 1) và (2, 3) cũng sẽ nhận được số tiền lì xì là 2 như trên.
TLE-oj Cup Round 12 - Cặp nghịch thế
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)
Đèn chiếu sáng (Quảng Trị 2025)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
CAU1.INP - Tệp ra:
CAU1.OUT - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
Từ dài (Khánh Hòa 2024)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
TUDAI.INP - Tệp ra:
TUDAI.OUT - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
Chữ cái in hoa (Cần Thơ 2023)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
CCIH.INP - Tệp ra:
CCIH.OUT - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
Giai đoạn tiến bộ nhất (Hải Phòng 2026)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
stdin - Tệp ra:
stdout - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
Bedan Contest #01 - C - Nhảy lò cò
Vì trời mưa liên tục những ngày nay nên chỉ có thể ở nhà mà không thể ra ngoài đường để chơi. Vì vậy quyết định rủ bạn bè đến nhà chơi nhảy lò cò 
Trò chơi bắt đầu với một dãy gồm n ô, ô ở vị trí pos sẽ có số điểm là a_{pos}. có tổng cộng n lượt chơi và tại lượt thứ i, cậu sẽ nhảy lên i ô trong n ô trên. Với mỗi bước nhảy, có thể nhảy đến một ô bất kì với điều kiện là vị trí ô cậu nhảy đến phải lớn hơn vị trí ô mà trước đó cậu đứng. Số điểm của mỗi lượt chơi sẽ là số nguyên dương m lớn nhất thỏa mãn P chia hết cho 10^m với P là tích của số điểm của các ô mà nhảy lên trong lượt chơi đó.
Người chiến thắng sẽ là người có tống số điểm sau n lượt chơi là cao nhất và muốn giành được chiến thắng. Tuy nhiên với mỗi lượt chơi, số lượng cách nhảy quá nhiều khiến cậu không biết phải làm như thế nào. Bạn hãy tính giúp số điểm tối đa cậu ấy có thể đạt được là bao nhiêu nhé.
Input, Output and Scoring
Input
- Hai nguyên dương n (1 \le n \le 100).
- Dãy a gồm n phần tử a_1, a_2, ..., a_n (1 \le a_i \le 100).
Output
- In ra kết quả thỏa mãn.
Scoring
- Subtask 1 (20\%): 1 \le n \le 20.
- Subtask 2 (80\%): Không giới hạn gì thêm.
Example
Input
3
2 5 10
Output
4
Note
- Tại lượt chơi 1, có thể nhảy vào ô thứ 3 để có số điểm là 1.
- Tại lượt chơi thứ 2, có thể nhảy vào ô thứ 1, 2 để có số điểm là 1.
- Tại lượt chơi thứ 3, có thể nhảy vào ô thứ 1, 2, 3 để có số điểm là 2.
- Tổng số điểm của các lượt chơi trên là 4, dễ dàng thấy đây là số điểm lớn nhất mà có thể đạt được.
TLEOJ Contest #15 - F-Function
Ta định nghĩa một hàm F(n,k) với 1\le k\le n, và n,k \in N như sau:
- Nếu k=1 thì F(n,k)=1.
- Ngược lại F(n,k)=\Sigma_{i=0}^{n}C_n^iF(n-i,k-1).
Yêu cầu: Cho biết n và k, hãy tính F(n,k).
Input, Output và Subtasks
Input: (bàn phím)
- Dòng đầu tiên gồm 2 số nguyên dương n,k (1\le k\le n\le 10^{18}).
Output: (màn hình)
- In ra theo yêu cầu, có thể đáp án rất lớn nên hãy in F(n,k) sau khi chia lấy dư cho 10^9+7.
Subtasks
- Subtask 1: 20% số điểm có n\le 10.
- Subtask 2: 40% số điểm có n\le 2.10^2
- Subtask 3: còn lại không có giới hạn gì thêm.
Sample
Input (bàn phím)
3 2
Output (màn hình)
8
TLEOJ Contest #15 - Số miền
Cho n đường thẳng nằm trong cùng 1 mặt phẳng sao cho không có 2 đường thẳng nào song song và không có 3 đường thẳng nào giao nhau.
Yêu cầu: Đếm số miền mà các mặt phẳng đã chia (theo điều kiện của đề bài thì đáp án luôn chỉ có 1).
Input, Output và Subtasks
Input: (bàn phím)
- Dòng đầu tiên chứa số nguyên dương t (1\le t\le 10^5) - số lượng truy vấn
- i dòng tiếp theo, dòng thứ i gồm 1 số nguyên dương n(1\le n\le 10^9).
Output: (màn hình)
- Với mỗi truy vấn in ra đáp án cần tìm. Vì kết quả có thể rất lớn nên ta lấy phần dư của kết quả khi chia cho 10^9+7.
Subtasks
- Subtask 1 (10\%) n\le 10.
- Subtask 2 (30\%) n\le 10^3
- Subtask 3 (20\%) n\le 10^6
- Subtask 4 (40\%) không có ràng buộc gì thêm.
Sample
Input (bàn phím)
1
3
Output (màn hình)
7
Notes

- Như các bạn có thể thấy ở hình dưới đây, nếu thỏa mãn các điều kiện trên thì sẽ luôn có 7 miền được chia ra.
Chiến tranh giữa các vì sao (Quảng Ninh 2025)
Đề bài: Đề thi được đính kèm trong tệp PDF bên dưới.
- Tệp vào:
STAR.INP - Tệp ra:
STAR.OUT - Thời gian chạy:
1.0s - Bộ nhớ:
1024MB
TLE-oj Cup Round 10 - Hàm số
NguyenHuuNhatQuang có hai hàm f(x, y, k) và g(a, b, c, k) được định nghĩa như sau (với div là phép chia lấy nguyên, mod là phép chia lấy dư và * là phép nhân):
định nghĩa g(a, b, c, k):
nếu b = 0:
nếu c = 0:
trả về a.
ngược lại:
trả về g(a, 1, 0, k).
ngược lại:
nếu a = 0:
nếu c = 0:
trả về b.
ngược lại
trả về g(1, b, 0, k).
ngược lại:
nếu a mod k + b mod k + c >= k:
đặt t = g(a div k, b div k, 1, k)
ngược lại:
đặt t = g(a div k, b div k, 0, k)
trả về t * k + ((a + b + c) mod k).
định nghĩa f(a, b, k):
nếu b = 0:
trả về 0.
ngược lại:
đặt t = f(a, b div 2, k)
nếu b mod 2 = 1:
trả về g(t * 2, a, 0, k).
ngược lại:
trả về t * 2.
Cài đặt đoạn mã giả trên bằng C++
long long g(long long a, long long b, long long c, long long k) {
if (b == 0) {
if (c == 0) {
return a;
} else {
return g(a, 1, 0, k);
}
} else {
if (a == 0) {
if (c == 0) {
return b;
} else {
return g(1, b, 0, k);
}
} else {
if (a % k + b % k + c >= k) {
long long t = g(a / k, b / k, 1, k);
return t * k + ((a + b + c) % k);
} else {
long long t = g(a / k, b / k, 0, k);
return t * k + ((a + b + c) % k);
}
}
}
}
long long f(long long a, long long b, long long k) {
if (b == 0) {
return 0;
} else {
long long t = f(a, b / 2, k);
if (b % 2 == 1) {
return g(t * 2, a, 0, k);
} else {
return t * 2;
}
}
}
Nhiệm vụ của bạn rất đơn giản, đó là đếm xem với hai số nguyên dương n, k cho trước, có bao nhiêu cặp số nguyên dương (a, b) sao cho a \le b \le n và f(a, b, k) = n.
Input, Output và Subtasks
Input: (FUNCTION.inp)
- Một dòng duy nhất gồm hai số nguyên dương n, k (1 < n, k \le 10^{14}).
Output: (FUNCTION.out)
- In ra kết quả bài toán. Vì kết quả có thể rất lớn nên chỉ cần lấy số dư của nó khi chia cho 10^9 + 7.
Subtasks
- Subtask 1 (60\%): n \le 2000.
- Subtask 2 (40\%): Không có giới hạn gì thêm.
Sample
Input (FUNCTION.inp)
2 2
Output (FUNCTION.out)
1
Note
- Không có note.