Tuyển sinh lớp 10 THPT chuyên · Phú Thọ · Tin học chuyên · 2026 · THỬ
Câu 1/4
Bản làm thử: 0 câu đầu miễn phí, đăng ký để làm cả 4 câu.Đăng ký miễn phí
Câu 1 · Tự luận
2,5 điểm
**Tổng quan đề thi**
| Câu | Tên bài | Chương trình | Dữ liệu | Kết quả | Giới hạn | Điểm |
|-----|---------|--------------|---------|---------|----------|------|
| 1 | Tuyến xe buýt | CAU1.* | Nhập từ bàn phím | Ghi ra màn hình | 1s/test | 2.5 |
| 2 | Số đẹp | CAU2.* | Nhập từ bàn phím | Ghi ra màn hình | 1s/test | 2.5 |
| 3 | Phân tách mảng | CAU3.* | Nhập từ bàn phím | Ghi ra màn hình | 1s/test | 2.5 |
| 4 | Ghép số | CAU4.* | Nhập từ bàn phím | Ghi ra màn hình | 1s/test | 2.5 |
*Lưu ý: Thí sinh thay \* trong tên chương trình thành PAS hoặc CPP hoặc PY tùy theo ngôn ngữ lập trình mà thí sinh sử dụng là Pascal, C/C++ hoặc Python.*
---
**Câu 1: Tuyến xe buýt (2,5 điểm)**
Một tỉnh có 3 bến xe buýt trung tâm $A$, $B$, $C$. Giữa bến $A$ và bến $B$ có $x$ tuyến xe buýt, giữa bến $B$ và bến $C$ có $y$ tuyến xe buýt, giữa bến $C$ và bến $A$ có $z$ tuyến xe buýt. Biết rằng để đi từ bến này đến bến kia, thì hành khách bắt buộc phải đi qua bến còn lại.
Hãy cho biết số cách đi nhiều nhất từ một bến đến một bến khác.
*Ví dụ:* Giữa bến $A$ và bến $B$ có 4 tuyến xe buýt, giữa bến $B$ và bến $C$ có 3 tuyến xe buýt, giữa bến $C$ và bến $A$ có 2 tuyến xe buýt. Khi đó số cách đi từ bến $A$ đến bến $C$ (phải bắt buộc đi qua bến $B$) là $4\times 3=12$ cách, số cách đi từ bến $C$ đến bến $B$ (bắt buộc phải đi qua bến $A$) là $4\times 2=8$ cách, số cách đi từ bến $B$ đến bến $A$ (bắt buộc phải đi qua bến $C$) là $3\times 2=6$ cách. Vậy số cách đi nhiều nhất giữa hai bến là 12 cách.
**Yêu cầu:** Hãy viết chương trình tính số cách đi nhiều nhất giữa 2 bến.
**Dữ liệu** (Nhập từ bàn phím): Ba số nguyên $x,y,z$ ($1\le x,y,z\le 10^{6}$) trên một dòng, mỗi số cách nhau bởi một dấu cách.
**Kết quả** (Ghi ra màn hình): Một số nguyên duy nhất là số cách đi nhiều nhất.
**Ví dụ:**
| Nhập từ bàn phím | Ghi ra màn hình |
|------------------|-----------------|
| 4 3 2 | 12 |
**Ràng buộc:**
- Subtask 1: 80% số điểm có $1\le x,y,z\le 1000$.
- Subtask 2: 20% số điểm không có ràng buộc gì thêm.
Câu này nằm trong bản đầy đủ
Đăng ký miễn phí để làm cả 4 câu, AI chấm và phân tích ngay.
**Tổng quan đề thi**
| Câu | Tên bài | Chương trình | Dữ liệu | Kết quả | Giới hạn | Điểm |
|-----|---------|--------------|---------|---------|----------|------|
| 1 | Tuyến xe buýt | CAU1.* | Nhập từ bàn phím | Ghi ra màn hình | 1s/test | 2.5 |
| 2 | Số đẹp | CAU2.* | Nhập từ bàn phím | Ghi ra màn hình | 1s/test | 2.5 |
| 3 | Phân tách mảng | CAU3.* | Nhập từ bàn phím | Ghi ra màn hình | 1s/test | 2.5 |
| 4 | Ghép số | CAU4.* | Nhập từ bàn phím | Ghi ra màn hình | 1s/test | 2.5 |
*Lưu ý: Thí sinh thay \* trong tên chương trình thành PAS hoặc CPP hoặc PY tùy theo ngôn ngữ lập trình mà thí sinh sử dụng là Pascal, C/C++ hoặc Python.*
---
**Câu 2: Số đẹp (2,5 điểm)**
Một số nguyên dương $x$ được gọi là **số đẹp** nếu nó đồng thời thỏa mãn hai điều kiện:
- Tổng các chữ số của $x$ là một số nguyên tố.
- $x$ chia hết cho tổng các chữ số của nó.
*Ví dụ:* Các số 12; 20; 21; 30 là số đẹp nhưng các số 6; 8; 11; 19 không phải là số đẹp.
**Yêu cầu:** Cho số nguyên dương $N$, hãy viết chương trình cho biết trong đoạn $[1,N]$ có bao nhiêu số đẹp.
**Dữ liệu** (Nhập từ bàn phím): Một số nguyên dương $N$ ($1\le N\le 10^{7}$).
**Kết quả** (Ghi ra màn hình): Một số nguyên là số lượng số đẹp tìm được.
**Ví dụ:**
| Nhập từ bàn phím | Ghi ra màn hình | Giải thích |
|------------------|-----------------|------------|
| 20 | 6 | Các số đẹp là: 2, 3, 5, 7, 12, 20 |
**Ràng buộc:**
- Subtask 1: 80% số điểm có $N\le 10^{4}$.
- Subtask 2: 20% số điểm không có ràng buộc gì thêm.
Câu này nằm trong bản đầy đủ
Đăng ký miễn phí để làm cả 4 câu, AI chấm và phân tích ngay.
**Tổng quan đề thi**
| Câu | Tên bài | Chương trình | Dữ liệu | Kết quả | Giới hạn | Điểm |
|-----|---------|--------------|---------|---------|----------|------|
| 1 | Tuyến xe buýt | CAU1.* | Nhập từ bàn phím | Ghi ra màn hình | 1s/test | 2.5 |
| 2 | Số đẹp | CAU2.* | Nhập từ bàn phím | Ghi ra màn hình | 1s/test | 2.5 |
| 3 | Phân tách mảng | CAU3.* | Nhập từ bàn phím | Ghi ra màn hình | 1s/test | 2.5 |
| 4 | Ghép số | CAU4.* | Nhập từ bàn phím | Ghi ra màn hình | 1s/test | 2.5 |
*Lưu ý: Thí sinh thay \* trong tên chương trình thành PAS hoặc CPP hoặc PY tùy theo ngôn ngữ lập trình mà thí sinh sử dụng là Pascal, C/C++ hoặc Python.*
---
**Câu 3: Phân tách mảng (2,5 điểm)**
Cho một dãy gồm $n$ số nguyên $a_{1},a_{2},\ldots,a_{n}$. Bạn cần thực hiện các bước sau theo đúng thứ tự:
1. Chọn một chỉ số $k$ ($1\le k\le n-1$).
2. Chia dãy số trên thành hai phần: $a_{1},a_{2},\ldots,a_{k}$ và $a_{k+1},a_{k+2},\ldots,a_{n}$.
3. Loại bỏ một phần tử duy nhất từ mỗi phần.
Gọi $c$ là tổng các phần tử của phần kết quả thứ nhất (sau khi loại bỏ) và $d$ là tổng các phần tử của phần kết quả thứ hai (sau khi loại bỏ). Nhiệm vụ của bạn là tìm giá trị lớn nhất có thể của $|c-d|$. Nói cách khác, tìm chênh lệch lớn nhất của hai phần sau khi thực hiện các bước trên.
Bạn có thể coi tổng của phần rỗng bằng 0 (nếu sau khi loại bỏ phần nào đó trở nên rỗng).
**Dữ liệu** (Nhập từ bàn phím):
- Dòng đầu: một số nguyên $n$ ($2\le n\le 10^{5}$) là số phần tử của dãy.
- Dòng thứ hai: $n$ số nguyên $a_{1},a_{2},\ldots,a_{n}$ ($-10^{3}\le a_{i}\le 10^{3}$).
**Kết quả** (Ghi ra màn hình):
- Một số nguyên duy nhất là giá trị lớn nhất có thể của $|c-d|$ sau khi thực hiện các bước như mô tả.
**Ví dụ:**
| Nhập từ bàn phím | Ghi ra màn hình |
|------------------|-----------------|
| 2<br>-1 2 | 0 |
| 4<br>2 5 4 -7 | 12 |
**Ràng buộc:**
- Subtask 1: 10% số điểm, $n\le 3$.
- Subtask 2: 30% số điểm, $a_{i}=a_{j},\ 1\le i,j\le n$.
- Subtask 3: 30% số điểm, $n\le 300$.
- Subtask 4: 30% số điểm, không có ràng buộc gì thêm.
Câu này nằm trong bản đầy đủ
Đăng ký miễn phí để làm cả 4 câu, AI chấm và phân tích ngay.
**Tổng quan đề thi**
| Câu | Tên bài | Chương trình | Dữ liệu | Kết quả | Giới hạn | Điểm |
|-----|---------|--------------|---------|---------|----------|------|
| 1 | Tuyến xe buýt | CAU1.* | Nhập từ bàn phím | Ghi ra màn hình | 1s/test | 2.5 |
| 2 | Số đẹp | CAU2.* | Nhập từ bàn phím | Ghi ra màn hình | 1s/test | 2.5 |
| 3 | Phân tách mảng | CAU3.* | Nhập từ bàn phím | Ghi ra màn hình | 1s/test | 2.5 |
| 4 | Ghép số | CAU4.* | Nhập từ bàn phím | Ghi ra màn hình | 1s/test | 2.5 |
*Lưu ý: Thí sinh thay \* trong tên chương trình thành PAS hoặc CPP hoặc PY tùy theo ngôn ngữ lập trình mà thí sinh sử dụng là Pascal, C/C++ hoặc Python.*
---
**Câu 4: Ghép số (2,5 điểm)**
Cho 4 số nguyên dương $N$, $K$, $A$ và $B$. Hãy xác định số nguyên lớn nhất có đúng $N$ chữ số, được tạo ra bằng cách ghép $K$ số phân biệt thuộc đoạn $[A,B]$.
**Dữ liệu** (Nhập từ bàn phím):
- Gồm một dòng duy nhất chứa bốn số nguyên $N$, $K$, $A$ và $B$ ($1\le K\le N\le 200$; $1\le A\le B\le 10^{9}$). Dữ liệu luôn đảm bảo tồn tại đáp án hợp lệ.
**Kết quả** (Ghi ra màn hình):
- Một số nguyên duy nhất là số lớn nhất tìm được.
**Ví dụ:**
| Nhập từ bàn phím | Ghi ra màn hình | Giải thích |
|------------------|-----------------|------------|
| 4 1 1000 9999 | 9999 | Chọn số duy nhất là 9999 |
| 4 3 8 29 | 9829 | Ghép các số 9, 8, 29 theo thứ tự để tạo thành số 9829 (độ dài đúng 4 chữ số) |
| 12 3 5000 9999 | 999999989997 | Các số trong đoạn đều có 4 chữ số. Ghép 3 số lớn nhất: 9999, 9998, 9997 |
| 11 4 2397 | 99999998997 | Ghép các số 99, 999, 998, 997 |
**Ràng buộc:**
- Subtask 1 (20% điểm): $K=1$ và $B\le 10^{5}$.
- Subtask 2 (30% điểm): $K\le 3$ và $B-A\le 100$.
- Subtask 3 (20% điểm): $A$ và $B$ có cùng số lượng chữ số.
- Subtask 4 (30% điểm): Không có ràng buộc bổ sung.
Câu này nằm trong bản đầy đủ
Đăng ký miễn phí để làm cả 4 câu, AI chấm và phân tích ngay.
Lưu ý: Thí sinh thay * trong tên chương trình thành PAS hoặc CPP hoặc PY tùy theo ngôn ngữ lập trình mà thí sinh sử dụng là Pascal, C/C++ hoặc Python.
Câu 1: Tuyến xe buýt (2,5 điểm)
Một tỉnh có 3 bến xe buýt trung tâm A, B, C. Giữa bến A và bến B có x tuyến xe buýt, giữa bến B và bến C có y tuyến xe buýt, giữa bến C và bến A có z tuyến xe buýt. Biết rằng để đi từ bến này đến bến kia, thì hành khách bắt buộc phải đi qua bến còn lại.
Hãy cho biết số cách đi nhiều nhất từ một bến đến một bến khác.
Ví dụ: Giữa bến A và bến B có 4 tuyến xe buýt, giữa bến B và bến C có 3 tuyến xe buýt, giữa bến C và bến A có 2 tuyến xe buýt. Khi đó số cách đi từ bến A đến bến C (phải bắt buộc đi qua bến B) là 4×3=12 cách, số cách đi từ bến C đến bến B (bắt buộc phải đi qua bến A) là 4×2=8 cách, số cách đi từ bến B đến bến A (bắt buộc phải đi qua bến C) là 3×2=6 cách. Vậy số cách đi nhiều nhất giữa hai bến là 12 cách.
Yêu cầu: Hãy viết chương trình tính số cách đi nhiều nhất giữa 2 bến.
Dữ liệu (Nhập từ bàn phím): Ba số nguyên x,y,z (1≤x,y,z≤106) trên một dòng, mỗi số cách nhau bởi một dấu cách.
Kết quả (Ghi ra màn hình): Một số nguyên duy nhất là số cách đi nhiều nhất.
Ví dụ:
Nhập từ bàn phím
Ghi ra màn hình
4 3 2
12
Ràng buộc:
Subtask 1: 80% số điểm có 1≤x,y,z≤1000.
Subtask 2: 20% số điểm không có ràng buộc gì thêm.
Tổng quan đề thi
Câu
Tên bài
Chương trình
Dữ liệu
Kết quả
Giới hạn
Điểm
1
Tuyến xe buýt
CAU1.*
Nhập từ bàn phím
Ghi ra màn hình
1s/test
2.5
2
Số đẹp
CAU2.*
Nhập từ bàn phím
Ghi ra màn hình
1s/test
2.5
3
Phân tách mảng
CAU3.*
Nhập từ bàn phím
Ghi ra màn hình
1s/test
2.5
4
Ghép số
CAU4.*
Nhập từ bàn phím
Ghi ra màn hình
1s/test
2.5
Lưu ý: Thí sinh thay * trong tên chương trình thành PAS hoặc CPP hoặc PY tùy theo ngôn ngữ lập trình mà thí sinh sử dụng là Pascal, C/C++ hoặc Python.
Câu 2: Số đẹp (2,5 điểm)
Một số nguyên dương x được gọi là số đẹp nếu nó đồng thời thỏa mãn hai điều kiện:
Tổng các chữ số của x là một số nguyên tố.
x chia hết cho tổng các chữ số của nó.
Ví dụ: Các số 12; 20; 21; 30 là số đẹp nhưng các số 6; 8; 11; 19 không phải là số đẹp.
Yêu cầu: Cho số nguyên dương N, hãy viết chương trình cho biết trong đoạn [1,N] có bao nhiêu số đẹp.
Dữ liệu (Nhập từ bàn phím): Một số nguyên dương N (1≤N≤107).
Kết quả (Ghi ra màn hình): Một số nguyên là số lượng số đẹp tìm được.
Ví dụ:
Nhập từ bàn phím
Ghi ra màn hình
Giải thích
20
6
Các số đẹp là: 2, 3, 5, 7, 12, 20
Ràng buộc:
Subtask 1: 80% số điểm có N≤104.
Subtask 2: 20% số điểm không có ràng buộc gì thêm.
Tổng quan đề thi
Câu
Tên bài
Chương trình
Dữ liệu
Kết quả
Giới hạn
Điểm
1
Tuyến xe buýt
CAU1.*
Nhập từ bàn phím
Ghi ra màn hình
1s/test
2.5
2
Số đẹp
CAU2.*
Nhập từ bàn phím
Ghi ra màn hình
1s/test
2.5
3
Phân tách mảng
CAU3.*
Nhập từ bàn phím
Ghi ra màn hình
1s/test
2.5
4
Ghép số
CAU4.*
Nhập từ bàn phím
Ghi ra màn hình
1s/test
2.5
Lưu ý: Thí sinh thay * trong tên chương trình thành PAS hoặc CPP hoặc PY tùy theo ngôn ngữ lập trình mà thí sinh sử dụng là Pascal, C/C++ hoặc Python.
Câu 3: Phân tách mảng (2,5 điểm)
Cho một dãy gồm n số nguyên a1,a2,…,an. Bạn cần thực hiện các bước sau theo đúng thứ tự:
Chọn một chỉ số k (1≤k≤n−1).
Chia dãy số trên thành hai phần: a1,a2,…,ak và ak+1,ak+2,…,an.
Loại bỏ một phần tử duy nhất từ mỗi phần.
Gọi c là tổng các phần tử của phần kết quả thứ nhất (sau khi loại bỏ) và d là tổng các phần tử của phần kết quả thứ hai (sau khi loại bỏ). Nhiệm vụ của bạn là tìm giá trị lớn nhất có thể của ∣c−d∣. Nói cách khác, tìm chênh lệch lớn nhất của hai phần sau khi thực hiện các bước trên.
Bạn có thể coi tổng của phần rỗng bằng 0 (nếu sau khi loại bỏ phần nào đó trở nên rỗng).
Dữ liệu (Nhập từ bàn phím):
Dòng đầu: một số nguyên n (2≤n≤105) là số phần tử của dãy.
Dòng thứ hai: n số nguyên a1,a2,…,an (−103≤ai≤103).
Kết quả (Ghi ra màn hình):
Một số nguyên duy nhất là giá trị lớn nhất có thể của ∣c−d∣ sau khi thực hiện các bước như mô tả.
Ví dụ:
Nhập từ bàn phím
Ghi ra màn hình
2-1 2
0
42 5 4 -7
12
Ràng buộc:
Subtask 1: 10% số điểm, n≤3.
Subtask 2: 30% số điểm, ai=aj,1≤i,j≤n.
Subtask 3: 30% số điểm, n≤300.
Subtask 4: 30% số điểm, không có ràng buộc gì thêm.
Tổng quan đề thi
Câu
Tên bài
Chương trình
Dữ liệu
Kết quả
Giới hạn
Điểm
1
Tuyến xe buýt
CAU1.*
Nhập từ bàn phím
Ghi ra màn hình
1s/test
2.5
2
Số đẹp
CAU2.*
Nhập từ bàn phím
Ghi ra màn hình
1s/test
2.5
3
Phân tách mảng
CAU3.*
Nhập từ bàn phím
Ghi ra màn hình
1s/test
2.5
4
Ghép số
CAU4.*
Nhập từ bàn phím
Ghi ra màn hình
1s/test
2.5
Lưu ý: Thí sinh thay * trong tên chương trình thành PAS hoặc CPP hoặc PY tùy theo ngôn ngữ lập trình mà thí sinh sử dụng là Pascal, C/C++ hoặc Python.
Câu 4: Ghép số (2,5 điểm)
Cho 4 số nguyên dương N, K, A và B. Hãy xác định số nguyên lớn nhất có đúng N chữ số, được tạo ra bằng cách ghép K số phân biệt thuộc đoạn [A,B].
Dữ liệu (Nhập từ bàn phím):
Gồm một dòng duy nhất chứa bốn số nguyên N, K, A và B (1≤K≤N≤200; 1≤A≤B≤109). Dữ liệu luôn đảm bảo tồn tại đáp án hợp lệ.
Kết quả (Ghi ra màn hình):
Một số nguyên duy nhất là số lớn nhất tìm được.
Ví dụ:
Nhập từ bàn phím
Ghi ra màn hình
Giải thích
4 1 1000 9999
9999
Chọn số duy nhất là 9999
4 3 8 29
9829
Ghép các số 9, 8, 29 theo thứ tự để tạo thành số 9829 (độ dài đúng 4 chữ số)
12 3 5000 9999
999999989997
Các số trong đoạn đều có 4 chữ số. Ghép 3 số lớn nhất: 9999, 9998, 9997
11 4 2397
99999998997
Ghép các số 99, 999, 998, 997
Ràng buộc:
Subtask 1 (20% điểm): K=1 và B≤105.
Subtask 2 (30% điểm): K≤3 và B−A≤100.
Subtask 3 (20% điểm): A và B có cùng số lượng chữ số.