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)

huyhau6a2, i_love_moonlight, tourist

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ó)

Sunlight, huyhau6a2

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

flo

Bài đầu tiên của flo và đây là phiên bản reupload :D

Sau một ngày dài mệt mỏi, flo quyết định chơi cờ vua với bạn cậu là huyhau6a2 để xả stress.

Sau khi chơi 69420 ván cờ, flo và huyhau6a2 đã 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 flo có rất nhiều quân mã nên cả hai lấy ra để nghịch. Sau đó, flo 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 flo đã 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ả flo và huyhau6a2 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 flo và huyhau6a2 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ì

flo

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, flo 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, flo đến nhà của bác mình là huyhau6a2 để chơi. Nhắc tới huyhau6a2, 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 huyhau6a2 liền đem ra cho flo 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 huyhau6a2 muốn flo 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ì flo 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, flo quyết định chấp nhận thử thách của bác huyhau6a2 đặ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 flo 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, flo 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ế

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)

Đè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ò

flo

Vì trời mưa liên tục những ngày nay nên flo chỉ có thể ở nhà mà không thể ra ngoài đường để chơi. Vì vậy flo 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}. flo 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, flo 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à flo 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à flo 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 flo 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, flo có thể nhảy vào ô thứ 3 để có số điểm là 1.
  • Tại lượt chơi thứ 2, flo có thể nhảy vào ô thứ 1, 2 để có số điểm là 1.
  • Tại lượt chơi thứ 3, flo 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à flo có thể đạt được.

TLEOJ Contest #15 - F-Function

i_loveMaiPhuong

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

i_loveMaiPhuong

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ố

Sunlight

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.