Bộ 11 Đề thi Tin Học Trẻ Thành phố Hà Nội (Có đáp án)

Bài 4: Lớp học

Một lớp học có n học sinh, thầy giáo đã đánh giá năng lực học tập của từng học sinh, cụ thể với bạn thứ i(1 ≤ i ≤ n):

- Ở môn toán, có năng lực là ci;

- Ở môn văn có hai phần là đọc hiểu với năng lực là ai, làm văn với năng lực là bi.

Khi hai bạn i và j làm nhóm với nhau với nhau, thì năng lực làm nhóm của hai bạn là:

- Ở môn toán là X (i, j) = ci + cj;

- Ở môn văn là Y (i, j) = min (|ai – aj|, |bi – bj|).

- Năng lực tổng hợp của hai bạn sẽ là T (i, j) = X (i, j) * Y (i, j).

Yêu cầu: Hãy tính giá trị Q = ∑1 ≤ i < j ≤ n T (i, j).

Dữ liệu vào từ thiết bị vào chuẩn:

- Dòng đầu chứa số nguyên dương n;

- Dòng thứ hai chứa n số nguyên dương ai;

- Dòng thứ ba chứa n số nguyên dương bi;

- Dòng thứ tư chứa n số nguyên dương ci.

Các số ai, bi, ci có giá trị không vượt quá 10⁶.

Kết quả ghi ra thiết bị ra chuẩn: một số nguyên là giá trị Q% (10⁹ + 7).

Ràng buộc:

- Có 25% số test ứng với 25% số điểm của bài có n ≤ 10³;

- Có 25% số test khác ứng với 25% số điểm của bài có n ≤ 10⁵;

- Có 25% số test khác ứng với 25% số điểm của bài có n ≤ 5 x 10⁵ và ci = cj với mọi 1 ≤ i < j ≤ n;

- Có 25% số test còn lại ứng với 25% số điểm của bài có n ≤ 5 x 10⁵.

docx 132 trang tinhoc 18/11/2025 631
Bạn đang xem 30 trang mẫu của tài liệu "Bộ 11 Đề thi Tin Học Trẻ Thành phố Hà Nội (Có đáp án)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

Tóm tắt nội dung tài liệu: Bộ 11 Đề thi Tin Học Trẻ Thành phố Hà Nội (Có đáp án)

Bộ 11 Đề thi Tin Học Trẻ Thành phố Hà Nội (Có đáp án)
 Bộ 11 Đề thi Tin Học Trẻ Thành phố Hà Nội (Có đáp án) - DeThiTinHoc.net
 DeThiTinHoc.net Bộ 11 Đề thi Tin Học Trẻ Thành phố Hà Nội (Có đáp án) - DeThiTinHoc.net
 ĐỀ SỐ 1
 HỘI THI TIN HỌC TRẺ ĐỀ THI VÒNG SƠ KHẢO 
 THÀNH PHỐ HÀ NỘI BẢNG A
 Thời gian: 90 phút (không kể thời gian giao đề)
Bài 1: Chọn quà
An được tặng 3 hộp quà có giá trị lần lượt là A, B và C.
An muốn chọn ra 2 hộp quà sao cho tổng giá trị nhận được là một số chẵn và càng lớn càng 
tốt
Yêu cầu:
Hãy tìm tổng lớn nhất có thể nhận được khi chọn 2 trong 3 hộp quà sao cho tổng đó là số 
chẵn.
Dữ liệu nhập vào từ bàn phím:
Ba dòng, mỗi dòng ghi một số tự nhiên, lần lượt là A, B, C (0 < A, B, C ≤ 1000).
Kết quả in ra màn hình:
Một dòng ghi số tự nhiên là tổng giá trị lớn nhất có thể nhận được, thỏa mãn điều kiện.
Ví dụ:
 Dữ liệu Kết quả
 2
 4 6
 5
 1
 3 8
 5
 10
 8 18
 6
Bài 2: Máy bắn bi
Trong khu vui chơi có một máy bắn bi đặc biệt. Máy sẽ bắn ra lần lượt A viên bi đỏ rồi đến 
B viên bi xanh, sau đó lại tiếp tục A viên đỏ, B viên xanh,...
Yêu cầu:
Cho biết số lượng A, B và N. Hãy tính xem trong N viên bi đầu tiên được bắn ra có bao 
nhiêu viên bi màu đỏ.
Dữ liệu nhập vào từ bàn phím:
Ba dòng, mỗi dòng ghi một số tự nhiên, lần lượt là A, B và N (1 ≤ A, B ≤ 100000; 1 ≤ N ≤ 
1000000000).
 DeThiTinHoc.net Bộ 11 Đề thi Tin Học Trẻ Thành phố Hà Nội (Có đáp án) - DeThiTinHoc.net
Kết quả in ra màn hình:
Một số nguyên duy nhất là số viên bi đỏ đã được bắn ra trong N viên bi đầu tiên.
Ví dụ:
 Dữ liệu Kết quả
 3
 2 6
 9
 1
 1 2
 4
 2
 3 4
 8
Giải thích:
- Ví dụ 1: Chuỗi bi được bắn ra là Đ Đ Đ X X Đ Đ Đ X, có 6 viên đỏ.
- Ví dụ 2: Chuỗi là Đ X Đ X, có 2 viên đỏ.
- Ví dụ 3: Đ Đ X X X Đ Đ X, có 4 viên đỏ.
Ràng buộc:
- Subtask 1 (70 điểm): 1 ≤ A, B, N ≤ 100
- Subtask 2 (30 điểm): 1 ≤ A, B ≤ 105, 1 ≤ N ≤ 109
Bài 3: Số may mắn
Một số tự nhiên được gọi là số may mắn nếu tổng các chữ số của nó chia hết cho 9.
Ví dụ: 9,18 và 2007 là các số may mắn.
Yêu cầu:
Cho hai số tự nhiên A và B. Hãy tính tổng tất cả các số may mắn nằm giữa A và B (không 
bao gồm A và B).
Dữ liệu nhập vào từ bàn phím:
Hai dòng, mỗi dòng ghi một số tự nhiên không quá 108, lần lượt là A và B (1 ≤ A ≤ B ≤ 108).
Kết quả in ra màn hình:
Một dòng ghi tổng các số may mắn giữa A và B.
Ví dụ:
 Dữ liệu Kết quả
 18 27
 30
 DeThiTinHoc.net Bộ 11 Đề thi Tin Học Trẻ Thành phố Hà Nội (Có đáp án) - DeThiTinHoc.net
Giải thích:
Các số may mắn nằm giữa 18 và 30 (lớn hơn 18 và nhỏ hơn 30) là: 27.
Kết quả là: 27.
Ràng buộc:
- Subtask 1 (50% số test): 1 ≤ A < B ≤ 104
- Subtask 2 (20% số test): A = 1,106 < B ≤ 108
- Subtask 3 (30% số test): 1 ≤ A ≤ B ≤ 108
Bài 4: Tổng hàng và cột
Cho bảng vuông kích thước N x N.
Các số tự nhiên từ 1 đến N2 được điền lần lượt từ phải qua trái, từ trên xuống dưới.
Ví dụ, với N = 5, bảng được điền như sau:
5 4 3 2 1
10 9 8 7 6
15 14 13 12 11
20 19 18 17 16
25 24 23 22 21
Yêu cầu:
Nhập vào hai số tự nhiên X và Y.
Hãy tính tổng các số thuộc hàng X và các số thuộc cột Y trong bảng, sau đó in ra tổng cộng 
của hai tổng này.
Lưu ý: không tính trùng số tại ô giao nhau giữa hàng X và cột Y.
Dữ liệu nhập vào từ bàn phím:
- Dòng 1: số nguyên dương N.
- Dòng 2: số nguyên dương X.
- Dòng 3: số nguyên dương Y.
(Với 1 ≤ X, Y ≤ N ≤ 105)
Kết quả in ra màn hình:
Mỗi dòng ghi tổng các số ở hàng X và cột Y, trừ đi số giao nhau (vì bị tính hai lần)
Ví dụ:
 Dữ liệu Kết quả
 5 93
 2
 4
Giải thích:
 DeThiTinHoc.net Bộ 11 Đề thi Tin Học Trẻ Thành phố Hà Nội (Có đáp án) - DeThiTinHoc.net
- Hàng 2: 10 + 9 + 8 + 7 + 6 = 40
- Cột 4: 2 + 7 + 12 + 17 + 22 = 60
- Giao giữa hàng 2 và cột 4 là số 7, bị tính hai lần.
→ Kết quả: 40 + 60 – 7 = 93 
Ràng buộc:
- Subtask 1 (50% số test): N ≤ 100
- Subtask 2 (50% số test): N ≤ 105
Bài 5: Số nhỏ nhất chia hết cho 6
Cho một số tự nhiên có không quá 100 chữ số.
Bạn được phép sắp xếp lại các chữ số này để tạo thành một số mới (không chứa số 0 không 
có nghĩa ở đầu).
Hãy tìm số nhỏ nhất có thể tạo ra mà chia hết cho 6.
Yêu cầu:
In ra số nhỏ nhất chia hết cho 6 có thể tạo ra từ hoán vị các chữ số của số đã cho.
Nếu không thể tạo được số chia hết cho 6, in ra 0.
Dữ liệu nhập vào từ bàn phím:
Một dòng ghi xâu ký tự số gồm không quá 100 chữ số.
Kết quả in ra màn hình:
Một dòng ghi số nhỏ nhất chia hết cho 6 tạo được, hoặc ghi 0 nếu không có cách nào.
Ví dụ:
 Dữ liệu Kết quả
 36 36
 531 0
 6030 3006
Giải thích:
- Ví dụ 1: Chỉ có một cách sắp xếp duy nhất số 36 → chia hết cho 6.
- Ví dụ 2: Không thể tạo số chia hết cho 2 (vì không có chữ số chẵn) → kết quả là 0.
- Ví dụ 3: Có nhiều cách tạo số chia hết cho 6 như 3600, 3060, 6300, 6030,  Trong đó 
3006 là số nhỏ nhất thỏa mãn.
Ràng buộc:
- Subtask 1 (30% số test): Dãy số không chứa chữ số 0.
- Subtask 2 (70% số test): Không có ràng buộc thêm.
 ---------HẾT---------
 DeThiTinHoc.net Bộ 11 Đề thi Tin Học Trẻ Thành phố Hà Nội (Có đáp án) - DeThiTinHoc.net
 ĐÁP ÁN
Bài 1: Chọn quà
C++
#include 
#include // Thư viện này chứa hàm std::max()
using namespace std;
int main() {
 // Khai báo 3 biến A, B, C để lưu giá trị của 3 hộp quà
 int A, B, C;
 // Đọc dữ liệu nhập vào từ bàn phím (3 dòng, mỗi dòng 1 số)
 // Dữ liệu nhập vào: A
 // B
 // C
 if (!(cin >> A >> B >> C)) {
 // Xử lý lỗi nếu việc đọc dữ liệu thất bại
 return 1; 
 }
 // Khởi tạo biến để lưu trữ tổng chẵn lớn nhất.
 // Vì giá trị A, B, C >= 0, nên tổng nhỏ nhất là 0 (nếu không có tổng chẵn nào)
 int maxTongChan = 0;
 // --- Tính và kiểm tra 3 tổng có thể ---
 // 1. Tổng A + B
 int T1 = A + B;
 // Kiểm tra T1 có phải là số chẵn không (T1 % 2 == 0)
 if (T1 % 2 == 0) {
 // Nếu là số chẵn, cập nhật maxTongChan
 maxTongChan = max(maxTongChan, T1);
 }
 // 2. Tổng A + C
 int T2 = A + C;
 DeThiTinHoc.net Bộ 11 Đề thi Tin Học Trẻ Thành phố Hà Nội (Có đáp án) - DeThiTinHoc.net
 if (T2 % 2 == 0) {
 maxTongChan = max(maxTongChan, T2);
 }
 // 3. Tổng B + C
 int T3 = B + C;
 if (T3 % 2 == 0) {
 maxTongChan = max(maxTongChan, T3);
 }
 // In kết quả ra màn hình
 cout << maxTongChan << endl;
 return 0;
}
Bài 2: Máy bắn bi
C++
#include 
#include // Thư viện chứa hàm std::min
using namespace std;
int main() {
 // A: số bi đỏ, B: số bi xanh, N: tổng số viên bi cần xét
 // Sử dụng 'long long' cho N và kết quả vì N có thể lên đến 10^9.
 long long A, B, N; 
 // Đọc dữ liệu nhập vào: A, B, N (mỗi số một dòng)
 if (!(cin >> A >> B >> N)) {
 return 1;
 }
 // --- Bắt đầu tính toán ---
 // 1. Tính độ dài của một chu kỳ (A viên đỏ + B viên xanh)
 long long doDaiChuKy = A + B;
 DeThiTinHoc.net Bộ 11 Đề thi Tin Học Trẻ Thành phố Hà Nội (Có đáp án) - DeThiTinHoc.net
 // 2. Tính số chu kỳ hoàn chỉnh
 // Ví dụ: N=9, A=3, B=2. doDaiChuKy=5. SoChuKy = 9 / 5 = 1
 long long soChuKy = N / doDaiChuKy;
 // 3. Tính tổng số bi đỏ trong các chu kỳ hoàn chỉnh
 // Mỗi chu kỳ có A viên bi đỏ.
 // TongBiDoChuKy = 1 * 3 = 3
 long long tongBiDoChuKy = soChuKy * A;
 // 4. Tính số viên bi còn lại (phần dư) sau các chu kỳ hoàn chỉnh
 // Ví dụ: PhanDu = 9 % 5 = 4
 long long phanDu = N % doDaiChuKy;
 // 5. Tính số bi đỏ trong phần dư
 // Phần dư chỉ là bi đỏ (A viên) cho đến khi hết phần dư.
 // Số bi đỏ trong phần dư là giá trị nhỏ nhất giữa 'phanDu' và 'A'.
 // Ví dụ: min(4, 3) = 3 (3 viên đỏ, 1 viên xanh)
 long long biDoPhanDu = min(phanDu, A);
 // 6. Tính tổng số bi đỏ cuối cùng
 long long tongBiDo = tongBiDoChuKy + biDoPhanDu;
 // In kết quả ra màn hình
 cout << tongBiDo << endl;
 return 0;
}
Bài 3: Số may mắn
C++
#include 
using namespace std;
// Hàm kiểm tra và tính tổng cấp số cộng
long long tinhTongCapSoCong(long long a_min, long long a_max, int d) {
 DeThiTinHoc.net Bộ 11 Đề thi Tin Học Trẻ Thành phố Hà Nội (Có đáp án) - DeThiTinHoc.net
 // Nếu a_min > a_max, không có số hạng nào thỏa mãn
 if (a_min > a_max) {
 return 0;
 }
 // 1. Tính số lượng số hạng (k)
 // k = (a_max - a_min) / d + 1
 long long k = (a_max - a_min) / d + 1;
 // 2. Tính tổng cấp số cộng (S)
 // S = k * (a_min + a_max) / 2
 // Lưu ý: Phải nhân trước rồi mới chia để đảm bảo kết quả chính xác,
 // do k * (a_min + a_max) luôn là số chẵn.
 long long tong = k * (a_min + a_max) / 2;
 return tong;
}
int main() {
 // A, B, và kết quả phải dùng long long để tránh tràn số (overflow)
 // A, B <= 10^8, Tổng có thể lên đến 10^15
 long long A, B; 
 // Đọc dữ liệu nhập vào: A (dòng 1), B (dòng 2)
 if (!(cin >> A >> B)) {
 return 1;
 }
 // --- 1. Tìm số may mắn đầu tiên (x_min) > A ---
 // Ta tìm số chia hết cho 9 nhỏ nhất >= (A + 1)
 long long x_start = A + 1;
 long long phanDuStart = x_start % 9;
 long long x_min;
 if (phanDuStart == 0) {
 // Nếu A+1 đã chia hết cho 9
 x_min = x_start;
 DeThiTinHoc.net Bộ 11 Đề thi Tin Học Trẻ Thành phố Hà Nội (Có đáp án) - DeThiTinHoc.net
 } else {
 // x_min = (A + 1) + (9 - (A + 1) % 9)
 x_min = x_start + (9 - phanDuStart);
 }
 // Cách 2 đơn giản hơn: x_min = ((A + 1 + 8) / 9) * 9;
 // --- 2. Tìm số may mắn cuối cùng (x_max) < B ---
 // Ta tìm số chia hết cho 9 lớn nhất <= (B - 1)
 long long x_end = B - 1;
 // x_max = (B - 1) - ((B - 1) % 9)
 long long x_max = x_end - (x_end % 9);
 // Cách 2 đơn giản hơn: x_max = (x_end / 9) * 9;
 // --- 3. Tính tổng cấp số cộng ---
 // Nếu B <= A + 1, thì không có số nguyên nào nằm giữa A và B
 // Hoặc nếu x_min >= B (hoặc x_min > x_max), thì không có số may mắn nào thỏa mãn
 if (x_min >= B || x_min > x_max) {
 cout << 0 << endl;
 } else {
 // Gọi hàm tính tổng cấp số cộng với công sai d = 9
 long long tongKetQua = tinhTongCapSoCong(x_min, x_max, 9);
 cout << tongKetQua << endl;
 }
 return 0;
}
Bài 4: Tổng hàng và cột
C++
#include 
using namespace std;
int main() {
 long long N, X, Y; 
 DeThiTinHoc.net

File đính kèm:

  • docxbo_11_de_thi_tin_hoc_tre_thanh_pho_ha_noi_co_dap_an.docx