đề thi hgs tin 8

- 0 / 0
(Tài liệu chưa được thẩm định)
Nguồn:
Người gửi: Ngô Thị Lộc
Ngày gửi: 17h:10' 04-04-2026
Dung lượng: 27.9 KB
Số lượt tải: 5
Nguồn:
Người gửi: Ngô Thị Lộc
Ngày gửi: 17h:10' 04-04-2026
Dung lượng: 27.9 KB
Số lượt tải: 5
Số lượt thích:
0 người
ĐỀ THI CHỌN HỌC SINH GIỎI LỚP 8
NĂM HỌC 2024 – 2025
Môn thi: Tin học
Thời gian làm bài: 120 phút, không kể thời gian giao đề
Đề thi gồm: 02 trang
Lưu ý: Thí sinh tạo thư mục là D:\HSGSBD (Ví dụ D:\HSG001) và lưu các tệp bài làm vào
thư mục vừa tạo.
TỔNG QUAN BÀI THI
Tên bài
Tên bài làm
Điểm
Câu 1
TỔNG LIÊN TIẾP.*
8,0
Câu 2
SỐ ĐẢO NGƯỢC.*
7,0
Câu 3
SỐ BỊ THIẾU.*
5,0
Phần mở rộng: *.pas đối với NN Pascal; *.cpp đối với NN C++; *.c đối với NN C.
Lập trình giải các bài toán sau (thời gian chạy tối đa cho mỗi bài là 1 giây)
Câu 1: Tổng liên tiếp
Cho ba số nguyên dương a, b, x (a ≤ b). Hỏi có bao nhiêu số nguyên liên ti ếp trong đoạn [a,
b] có tổng các chữ số chia hết cho x?
Dữ liệu vào: Nhập từ bàn phím một dòng chứa ba số nguyên dương a, b, x (1 ≤ a ≤ b ≤ 10^9,
1 ≤ x ≤ 100).
Kết quả: Ghi ra một số nguyên dương là kết quả bài toán.
Ví dụ:
Dữ liệu vào: 10 20 5
Kết quả: 3
Câu 2: Số đảo ngược
Cho số nguyên dương n. Hãy tìm số đảo ngược của n và kiểm tra xem số đó có phải là bội
của 7 hay không.
Dữ liệu vào: Nhập từ bàn phím một số nguyên dương n (n ≤ 10^12).
Kết quả: Ghi ra "YES" nếu số đảo ngược là bội của 7, ngược lại ghi "NO".
Ví dụ:
Dữ liệu vào: 123
Kết quả: NO
Câu 3: Số bị thiếu
Cho một dãy gồm n số nguyên dương đôi một khác nhau trong đoạn [1, n+1], nhưng thiếu
đúng một số. Hãy tìm số bị thiếu.
Dữ liệu vào:
• Dòng đầu ghi số nguyên dương n (1 ≤ n ≤ 10^6).
• Dòng thứ hai chứa n số nguyên đôi một khác nhau thuộc đoạn [1, n+1].
Kết quả: In ra số nguyên bị thiếu duy nhất.
Ví dụ:
Dữ liệu vào:
4
2145
Kết quả:
3
ĐÁP ÁN THAM KHẢO
Câu 1: Tổng liên tiếp
int tongChuSo(int n) {
int s = 0;
while (n > 0) {
s += n % 10;
n /= 10;
}
return s;
}
int main() {
long long a, b, x, dem = 0;
cin >> a >> b >> x;
for (long long i = a; i <= b; i++) {
if (tongChuSo(i) % x == 0) dem++;
}
cout << dem;
}
Câu 2: Số đảo ngược
long long daoNguoc(long long n) {
long long rev = 0;
while (n > 0) {
rev = rev * 10 + n % 10;
n /= 10;
}
return rev;
}
int main() {
long long n;
cin >> n;
long long m = daoNguoc(n);
if (m % 7 == 0) cout << "YES";
else cout << "NO";
}
Câu 3: Số bị thiếu
int main() {
int n, x, tong = 0;
cin >> n;
int tongDung = (n + 1) * (n + 2) / 2;
for (int i = 0; i < n; i++) {
cin >> x;
tong += x;
}
cout << tongDung - tong;
}
NĂM HỌC 2024 – 2025
Môn thi: Tin học
Thời gian làm bài: 120 phút, không kể thời gian giao đề
Đề thi gồm: 02 trang
Lưu ý: Thí sinh tạo thư mục là D:\HSGSBD (Ví dụ D:\HSG001) và lưu các tệp bài làm vào
thư mục vừa tạo.
TỔNG QUAN BÀI THI
Tên bài
Tên bài làm
Điểm
Câu 1
TỔNG LIÊN TIẾP.*
8,0
Câu 2
SỐ ĐẢO NGƯỢC.*
7,0
Câu 3
SỐ BỊ THIẾU.*
5,0
Phần mở rộng: *.pas đối với NN Pascal; *.cpp đối với NN C++; *.c đối với NN C.
Lập trình giải các bài toán sau (thời gian chạy tối đa cho mỗi bài là 1 giây)
Câu 1: Tổng liên tiếp
Cho ba số nguyên dương a, b, x (a ≤ b). Hỏi có bao nhiêu số nguyên liên ti ếp trong đoạn [a,
b] có tổng các chữ số chia hết cho x?
Dữ liệu vào: Nhập từ bàn phím một dòng chứa ba số nguyên dương a, b, x (1 ≤ a ≤ b ≤ 10^9,
1 ≤ x ≤ 100).
Kết quả: Ghi ra một số nguyên dương là kết quả bài toán.
Ví dụ:
Dữ liệu vào: 10 20 5
Kết quả: 3
Câu 2: Số đảo ngược
Cho số nguyên dương n. Hãy tìm số đảo ngược của n và kiểm tra xem số đó có phải là bội
của 7 hay không.
Dữ liệu vào: Nhập từ bàn phím một số nguyên dương n (n ≤ 10^12).
Kết quả: Ghi ra "YES" nếu số đảo ngược là bội của 7, ngược lại ghi "NO".
Ví dụ:
Dữ liệu vào: 123
Kết quả: NO
Câu 3: Số bị thiếu
Cho một dãy gồm n số nguyên dương đôi một khác nhau trong đoạn [1, n+1], nhưng thiếu
đúng một số. Hãy tìm số bị thiếu.
Dữ liệu vào:
• Dòng đầu ghi số nguyên dương n (1 ≤ n ≤ 10^6).
• Dòng thứ hai chứa n số nguyên đôi một khác nhau thuộc đoạn [1, n+1].
Kết quả: In ra số nguyên bị thiếu duy nhất.
Ví dụ:
Dữ liệu vào:
4
2145
Kết quả:
3
ĐÁP ÁN THAM KHẢO
Câu 1: Tổng liên tiếp
int tongChuSo(int n) {
int s = 0;
while (n > 0) {
s += n % 10;
n /= 10;
}
return s;
}
int main() {
long long a, b, x, dem = 0;
cin >> a >> b >> x;
for (long long i = a; i <= b; i++) {
if (tongChuSo(i) % x == 0) dem++;
}
cout << dem;
}
Câu 2: Số đảo ngược
long long daoNguoc(long long n) {
long long rev = 0;
while (n > 0) {
rev = rev * 10 + n % 10;
n /= 10;
}
return rev;
}
int main() {
long long n;
cin >> n;
long long m = daoNguoc(n);
if (m % 7 == 0) cout << "YES";
else cout << "NO";
}
Câu 3: Số bị thiếu
int main() {
int n, x, tong = 0;
cin >> n;
int tongDung = (n + 1) * (n + 2) / 2;
for (int i = 0; i < n; i++) {
cin >> x;
tong += x;
}
cout << tongDung - tong;
}
 








Các ý kiến mới nhất