Bộ đề ôn luyện thi Học sinh giỏi Tin học 8 (Kèm đáp án)

docx 133 trang Minh Trúc 26/11/2025 80
Bạn đang xem 30 trang mẫu của tài liệu "Bộ đề ôn luyện thi Học sinh giỏi Tin học 8 (Kèm đá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ộ đề ôn luyện thi Học sinh giỏi Tin học 8 (Kèm đáp án)

Bộ đề ôn luyện thi Học sinh giỏi Tin học 8 (Kèm đáp án)
 Bộ đề ôn luyện thi Học sinh giỏi Tin học 8 (Kèm đáp án) - De-Thi.com
Ví dụ:
 BAI2.INP BAI2.OUT
 8 6 6 2 4 5 6
 1 2 3 4 5 6
 2 4 5 6 7 8
Ràng buộc:
+ Có 50% số test tương ứng 50% số điểm của bài có 0<N≤104;
+ Có 50% số test tương ứng 50% số điểm của bài không ràng buộc gì thêm.
Bài 3. (4,0 điểm) 
 Số nguyên dương x (x>1) được gọi là số đẹp mức k nếu ước nguyên tố lớn nhất của nó 
không vượt quá k.
Yêu cầu: Hãy đếm xem có bao nhiêu số đẹp mức k không vượt quá n.
Dữ liệu: Đọc từ file BAI3.INP gồm một dòng duy nhất chứa hai số nguyên n và k 
(1<n≤106; 1<k≤ 103). 
Kết quả: Ghi ra file BAI3.OUT một số nguyên duy nhất là kết quả của bài toán.
Ví dụ:
 BAI3.INP BAI3.OUT
 10 3 6
 10 4 6
 15 3 7
 20 5 13
 123456 123 23854
Ràng buộc:
+ Có 40% số test tương ứng 40% số điểm của bài có 1<n≤104;
+ Có 30% số test tương ứng 30% số điểm của bài có 104<n≤105;
+ Có 30% số test tương ứng 30% số điểm của bài có 105<n≤106.
Bài 4. (2,0 điểm)
 Kì thi Olympic Tin học vừa được tổ chức. Có N bạn thí sinh tham gia kì thi này, điểm 
số các thí sinh đạt được trong kì thi đều là số nguyên dương. Các thí sinh được xếp hạng theo 
tiêu chí sau:
- Thí sinh có điểm cao nhất có thứ hạng là 1, thí sinh có điểm số càng cao thì thứ hạng càng 
nhỏ.
- Các thí sinh bằng điểm nhau thì sẽ có cùng thứ hạng.
 Ví dụ, nếu điểm số của các thí sinh là 20, 50, 40, 30, 30 thì thứ hạng của các thí sinh lần 
lượt là 5, 1, 2, 3, 3.
 De-Thi.com Bộ đề ôn luyện thi Học sinh giỏi Tin học 8 (Kèm đáp án) - De-Thi.com
 Khi công bố kết quả chính thức, ban tổ chức chỉ công bố thứ hạng mà không công bố số 
điểm cụ thể của từng thí sinh. 
Yêu cầu: Hãy tìm xem tổng số điểm nhỏ nhất có thể mà các thí sinh đã đạt được trong kì thi.
Dữ liệu: Đọc từ file BAI4.INP gồm:
+ Dòng đầu tiên gồm một số nguyên dương N (N ≤100000) là số thí sinh tham dự kì thi.
+ Dòng thứ hai gồm một dãy N số nguyên dương a1,a2,...,aN với ai là thứ hạng của thí sinh 
thứ i (1≤i≤N).
 Dữ liệu vào đảm bảo dãy thứ hạng của thí sinh là hợp lệ (tồn tại ít nhất một dãy điểm số 
dẫn đến thứ hạng này).
Kết quả: Ghi ra file BAI4.OUT một số nguyên duy nhất là kết quả của bài toán.
Ví dụ:
 BAI4.INP BAI4.OUT Giải thích
5 12 Số điểm đạt được của các thí sinh lần lượt là 1, 4, 3, 
5 1 2 3 3 2, 2, tổng số điểm là 1+4+3+2+2=12.
4 7 Số điểm đạt được của các thí sinh lần lượt là 2, 2, 2, 
1 1 1 4 1, tổng số điểm là 2+2+2+1=7.
Ràng buộc:
+ Có 50% số điểm của bài có 1<N≤103;
+ Có 50% số điểm của bài không ràng buộc gì thêm.
 -----------HẾT-----------
 De-Thi.com Bộ đề ôn luyện thi Học sinh giỏi Tin học 8 (Kèm đáp án) - De-Thi.com
 ĐÁP ÁN
PHẦN THI: LÝ THUYẾT
A. Phần thi lý thuyết: (4,0 điểm)
 Câu Câu 1 Câu 2 Câu 3 Câu 4 Câu 5 Câu 6 Câu 7 Câu 8
 Đáp án C B D C D B C A
 Câu Câu 9 Câu 10 Câu 11 Câu 12 Câu 13 Câu 14 Câu 15 Câu 16
 Đáp án A C D D C B C A
Mỗi câu trả lời đúng được 0,25 điểm.
B. Phần thi thực hành: (16,0 điểm)
Chấm trên phần mềm chấm bài tự độngThemis:
 File Thời 
 File dữ Điểm/1 Tổng 
 Bài chương File kết quả gian 1 Số test
 liệu vào test điểm
 trình test
 1 BAI1.CPP BAI1.INP BAI1.OUT 1s 10 0,6 6
 2 BAI2.CPP BAI2.INP BAI2.OUT 1s 20 0,2 4
 3 BAI3.CPP BAI3.INP BAI3.OUT 1s 20 0,2 4
 4 BAI4.CPP BAI4.INP BAI4.OUT 1s 10 0,2 2
 Tổng điểm thực hành: 16
PHẦN THI: THỰC HÀNH
Bài 1. (6,0 điểm) 
Code tham khảo:
#include 
using namespace std;
int x,y;
int ucln(int a, int b)
{ while (a*b!=0)
 { if (a>b) a=a%b;
 else b=b%a;
 }
 return a+b;
}
int main()
{
 ios_base::sync_with_stdio(false);
 cin.tie(0);cout.tie(0);
 De-Thi.com Bộ đề ôn luyện thi Học sinh giỏi Tin học 8 (Kèm đáp án) - De-Thi.com
 freopen("BAI1.INP","r",stdin);
 freopen("BAI1.OUT","w",stdout);
 cin>>x>>y;
 cout<<ucln(x,y);
 return 0;
}
Bài 2. (4,0 điểm) 
Code tham khảo:
#include 
using namespace std;
#define N (int)1e6
int n,x,y,m,c[N+5],ok=0;
int main()
{
 ios_base::sync_with_stdio(false);
 cin.tie(0);cout.tie(0);
 freopen("BAI2.INP","r",stdin);
 freopen("BAI2.OUT","w",stdout);
 cin>>n>>x>>y;
 for(int i=1; i >m;c[m]++;}
 for(int i=1; i >m;c[m]++;}
 for(int i=1; i<=n;i++)
 if(c[i]==2){cout<<i<<" "; ok=1; }
 if (ok==0) cout<<0;
 return 0;
}
Bài 3. (4,0 điểm) 
Code tham khảo:
#include 
using namespace std;
int n,k,ans=0;
int uocmax(int x)
 { int i,j;
 for(i=2;i*i<=x;i++)
 while(x%i==0){x=x/i;j=i;}
 De-Thi.com Bộ đề ôn luyện thi Học sinh giỏi Tin học 8 (Kèm đáp án) - De-Thi.com
 if (x>1) return x;
 else return j;
 }
int main()
{
 ios_base::sync_with_stdio(false);
 cin.tie(0);cout.tie(0);
 freopen("BAI3.INP","r",stdin);
 freopen("BAI3.OUT","w",stdout);
 cin>>n>>k;
 for(int m=2; m <=n; m++)
 if (uocmax(m)<=k) ans++;
 cout<<ans;
 return 0;
}
Bài 4. (2,0 điểm)
Code tham khảo:
include 
#define N (int) 1e5
using namespace std;
int a[N+5],n;
long long tongdiem = 0, diem = 1;
int main()
{
 ios_base::sync_with_stdio(false);
 cin.tie(0);cout.tie(0);
 freopen("BAI4.INP","r",stdin);
 freopen("BAI4.OUT","w",stdout);
 cin>>n;
 for(int i = 1; i >a[i];
 sort(a+1, a+n+1, greater ());
 for(int i=1; i <=n; i++)
 {if (i > 1 && a[i] < a[i-1])diem++;
 tongdiem += diem;
 }
 cout<<tongdiem;
 return 0;
 De-Thi.com Bộ đề ôn luyện thi Học sinh giỏi Tin học 8 (Kèm đáp án) - De-Thi.com
 ĐỀ SỐ 7
 PHÒNG GD&ĐT SƠN ĐỘNG KÌ THI CHỌN HỌC SINH GIỎI CẤP HUYỆN
 Môn thi: Tin học 8
 Năm học: 2023-2024
 Thời gian: 120 phút (Không tính thời gian giao đề)
 TỔNG QUAN ĐỀ THI
 Câu hỏi Tên tệp bài thi Vị trí sau khi lưu
 Câu 1 Laco D:\THCS_0001\Laco.sb3
 Câu 2 Tamgiac D:\THCS_0001\Tamgiac.sb3
 Câu 3 Tiendien D:\THCS_0001\Tiendien.xlsx
 Câu 4 Dayso D:\THCS_0001\Dayso.sb3
Yêu cầu chung:
- Tạo 1 thư mục với cấu trúc: THCS_SBD ở ổ đĩa D:\
VD: Thí sinh có SBD 0001 thì tạo thư mục có tên THCS_0001
- Thí sinh lưu các tệp bài thi vào thư mục đã tạo theo hướng dẫn.
Câu 1 (25 điểm): Hãy viết chương trình để vẽ hình lá cờ tổ quốc có chiều dài 150 và chiều 
rộng 100 nền đỏ, sao vàng có cạnh dài 50 được tô đầy.
 150
 100
 50
Câu 2 (25 điểm): 3 cạnh của tam giác bất kì phải thoả mãn điều kiện sau:
Tổng số đo của 2 cạnh luôn luôn lớn hơn số đo cạnh còn lại.
Em hãy viết chương trình Scatch nhập vào 3 số bất kì.
- Kiểm tra xem 3 số đó có là 3 cạnh của một tam giác hay không?
- Nếu là 3 cạnh của tam giác, kiểm tra tam giác đó có là tam giác cân hay không?
Dữ liệu: bộ 3 số a;b;c là các số tự nhiên
Kết quả: Kết luận bộ 3 số a;b;c tạo thành hoặc không tạo nhành 1 tam giác.
 Tam giác là cân hay không cân.
 De-Thi.com Bộ đề ôn luyện thi Học sinh giỏi Tin học 8 (Kèm đáp án) - De-Thi.com
Ví dụ:
 INPUT OUTPUT
3;4;5 3;4;5 là 3 cạnh của một tam giác
 Tam giác không cân
1;2;3 1;2;3 không phải cạnh của một tam giác.
3;3;5 3;3;5 là 3 cạnh của một tam giác
 Tam giác là tam giác cân.
Câu 3 (30 điểm): Sử dụng phần mềm Excel để hoàn thiện bảng tính tại các vị trí có dấu ? 
bằng hàm có sẵn hoặc công thức:
 BẢNG TIÊU THỤ ĐIỆN 4 THÁNG CUỐI NĂM 2023
Câu 4 (20 điểm): Nhập vào số nguyên n > 3 và nhập vào dãy gồm n số nguyên.
a/ Tính trung bình cộng các số chia hết cho 3.
b/ Liệt kê những bộ 3 số liên tiếp trong dãy có tổng lớn hơn giá trị trung bình ở phần a/
Ví dụ:
 INPUT OUTPUT
n=7 Trung bình: 3.75
Dãy: 2;-3;1;6;5;9;3 -3;1;6 
 1;6;5
 6;5;9
 5;9;3
n=4 Trung bình: 6
Dãy: 1;1;2;6 1;2;6
n=4 Trung bình: 0
Dãy: -2;-4;-7;-8 Không có cặp số nào
 -------------HẾT-------------
 De-Thi.com Bộ đề ôn luyện thi Học sinh giỏi Tin học 8 (Kèm đáp án) - De-Thi.com
 ĐÁP ÁN
Câu 1 (25 điểm):
/* Thư viện đồ họa như Graphics.h hoặc SFML */
// const double R = 40.0; // Bán kính ngoài ngôi sao
// const int X_TAM = 75;
// const int Y_TAM = 50;
// void VeNgoiSao() {
// // setfillstyle(SOLID_FILL, YELLOW);
// // int star_points[10]; // 5 đỉnh * 2 tọa độ (x, y)
// // for (int k = 0; k < 5; ++k) {
// // double angle = (90.0 - k * 72.0) * M_PI / 180.0; // Góc của đỉnh sao (bắt đầu từ 
trên)
// // star_points[2*k] = X_TAM + (int)(R * cos(angle));
// // star_points[2*k + 1] = Y_TAM - (int)(R * sin(angle));
// // }
// // fillpoly(5, star_points);
// }
Câu 2 (25 điểm):
#include 
#include // Có thể dùng cho hàm max/min
#include 
using namespace std;
void KiemTraTamGiac() {
 int a, b, c;
 cout << "Nhap do dai 3 canh a, b, c (cac so tu nhien): ";
 // Giả sử đầu vào luôn là số tự nhiên (nguyên dương)
 if (!(cin >> a >> b >> c)) return; 
 // 1. KIỂM TRA ĐIỀU KIỆN TAM GIÁC (Tổng hai cạnh > cạnh còn lại)
 if ((a + b > c) && 
 (a + c > b) && 
 De-Thi.com Bộ đề ôn luyện thi Học sinh giỏi Tin học 8 (Kèm đáp án) - De-Thi.com
 (b + c > a)) {
 // 2. LÀ TAM GIÁC => KIỂM TRA TAM GIÁC CÂN (Ít nhất 2 cạnh bằng nhau)
 if ((a == b) || (a == c) || (b == c)) {
 cout << "Tam giac la tam giac can." << endl;
 } else {
 cout << "Tam giac la tam giac thuong (khong can)." << endl;
 }
 } else {
 // 3. KHÔNG PHẢI TAM GIÁC
 cout << "Ket hop ba so " << a << ", " << b << ", " << c << " khong tao thanh mot tam 
giac." << endl;
 }
}
Câu 3 (30 điểm):
#include 
#include 
#include // Dùng cho std::accumulate
#include // Dùng cho std::min_element
using namespace std;
void TinhThongKeDien() {
 // Dữ liệu số điện tiêu thụ (Cột B)
 vector soDien = {200, 86, 101, 49};
 vector thang = {9, 10, 11, 12};
 int n = soDien.size();
 // 1. TÍNH TỔNG SỐ ĐIỆN TIÊU THỤ QUÝ 4
 // Công thức Excel: =SUM(B9:B12)
 int tongSoDien = accumulate(soDien.begin(), soDien.end(), 0);
 // Giá trị: 200 + 86 + 101 + 49 = 436
 cout << "Tong so dien tieu thu quy 4: " << tongSoDien << " (kWh)" << endl;
 // 2. TÍNH SỐ ĐIỆN TIÊU THỤ TRUNG BÌNH MỖI THÁNG
 // Công thức Excel: =AVERAGE(B9:B12)
 double trungBinh = (double)tongSoDien / n;
 De-Thi.com Bộ đề ôn luyện thi Học sinh giỏi Tin học 8 (Kèm đáp án) - De-Thi.com
 // Giá trị: 436 / 4 = 109
 cout << "So dien tieu thu trung binh moi thang: " << trungBinh << " (kWh)" << endl;
 // 3. TÌM THÁNG TIÊU THỤ ĐIỆN ÍT NHẤT
 // Công thức Excel: =INDEX(A9:A12, MATCH(MIN(B9:B12), B9:B12, 0))
 auto minElement = min_element(soDien.begin(), soDien.end());
 int indexMin = distance(soDien.begin(), minElement);
 // Giá trị nhỏ nhất là 49, tại index 3 => Tháng 12
 cout << "Thang tieu thu dien it nhat: " << thang[indexMin] 
 << " (" << *minElement << " kWh)" << endl;
 // *Lưu ý: Tiền điện phải trả cần công thức bậc thang, không đủ dữ liệu để tính.*
}
Câu 4 (20 điểm):
#include 
#include 
#include 
#include // Dùng để định dạng số thập phân
using namespace std;
void GiaiBai4() {
 int n;
 cout = 3): ";
 cin >> n;
 if (n < 3) {
 cout = 3." << endl;
 return;
 }
 vector arr(n);
 cout << "Nhap day gom " << n << " so nguyen: ";
 for (int i = 0; i < n; ++i) {
 cin >> arr[i];
 }
 De-Thi.com

File đính kèm:

  • docxbo_de_on_luyen_thi_hoc_sinh_gioi_tin_hoc_8_kem_dap_an.docx