Bộ 11 Đề thi Học sinh giỏi cấp Trường Tin học Lớp 10 (Có đáp án)
Câu 22. Sử dụng vòng lặp while, bạn có thể đếm số lượng số tự nhiên chia hết cho 5 hoặc chia hết cho 3 dư 1 trong dãy số từ 1 đến 100. Biểu thức nào kiểm tra đúng điều kiện này?
A. if n%5 == 0 or n%3 == 0 and n%5 != 0
B. if n%5 == 0 or n%3 == 1
C. if n%5 == 0 and n%3 == 1
D. if n%5 == 0 or n%3 == 0
Câu 23. Một học sinh muốn sử dụng hình ảnh từ Internet cho bài thuyết trình của mình. Để tuân thủ quyền tác giả, học sinh cần làm gì?
A. Sử dụng hình ảnh miễn phí từ bất kỳ nguồn nào trên Internet.
B. Tự chỉnh sửa hình ảnh để sử dụng mà không cần ghi nguồn.
C. Chỉ sử dụng hình ảnh có giấy phép Creative Commons hoặc xin phép tác giả.
D. Tải bất kỳ hình ảnh nào từ Internet mà không cần xin phép.
Câu 24. Dữ liệu và thông tin có sự khác biệt chủ yếu ở điểm nào?
A. Dữ liệu là những giá trị chưa được xử lý, còn thông tin là dữ liệu đã được phân tích và có ý nghĩa.
B. Thông tin luôn có sẵn, còn dữ liệu phải được tạo ra.
C. Dữ liệu chỉ dùng cho lưu trữ, còn thông tin dùng cho xử lý.
D. Dữ liệu có thể là các con số, chữ cái, trong khi thông tin là kết quả của các phép toán.
Câu 25. Một học sinh sử dụng phần mềm quản lý lớp học để theo dõi danh sách học sinh và điểm số. Sau khi nhập dữ liệu, học sinh muốn lọc danh sách để tìm ra những bạn có điểm trung bình lớn hơn 8. Đây là bước nào trong quá trình xử lý thông tin?
A. Thu thập dữ liệu. B. Xử lý dữ liệu.
C. Đưa ra kết quả. D. Lưu trữ dữ liệu.
Câu 26. Đoạn mã dưới đây thực hiện công việc gì?
s = 0
i = 0
while s < 2:
i = i + 1
s = s + 1 / i
print("Giá trị i cần tìm =", i)
A. Tính giá trị i sao cho tổng của dãy số nhỏ hơn 2.
B. Tính tổng các số tự nhiên cho đến khi tổng nhỏ hơn 2.
C. Tính tổng các giá trị từ 1 đến 10.
D. Tính tổng các bình phương của các số tự nhiên.
Câu 27. Một chương trình yêu cầu nhập vào một số và kiểm tra xem số đó có lớn hơn 0 hay không. Bạn sẽ sử dụng cấu trúc nào?
A. Vòng lặp while. B. Hàm print(). C. Thư viện math. D. Câu lệnh if.
Câu 28. Để kiểm tra xem một số có phải là số nguyên tố hay không, bạn sẽ sử dụng cấu trúc nào?
A. for và if B. try...except C. if...else D. break
Câu 29. Nhóm của bạn Trang đang tìm kiếm nội dung chuẩn bị cho bài thuyết trình môn Địa lí. Trang tìm được một trang web có kho dữ liệu phong phú với nhiều tài liệu hay và được yêu cầu phải đăng kí tài khoản để truy cập có trả phí. Phương án nào sau đây không phải là nguy cơ mà Trang có thể gặp phải khi thực hiện hoạt động trên?
A. Có thể lộ thông tin cá nhân.
B. Có thể các tài liệu trên là vi phạm bản quyền.
C. Máy tính có thể bị xâm nhập bởi các phần mềm độc hại.
D. Máy tính có thể cài đặt tường lửa để hạn chế việc xâm nhập.
Tóm tắt nội dung tài liệu: Bộ 11 Đề thi Học sinh giỏi cấp Trường Tin học Lớp 10 (Có đáp án)
Bộ 11 Đề thi Học sinh giỏi cấp Trường Tin học Lớp 10 (Có đáp án) - DeThiTinHoc.net
DeThiTinHoc.net Bộ 11 Đề thi Học sinh giỏi cấp Trường Tin học Lớp 10 (Có đáp án) - DeThiTinHoc.net
ĐỀ SỐ 1
SỞ GD & ĐT HÀ NỘI KỲ THI CHỌN HSG CẤP TRƯỜNG
TRƯỜNG THPT PHÙNG KHẮC MÔN: TIN HỌC - LỚP 10
KHOAN - THẠCH THẤT Thời gian: 150 phút (không kể thời gian giao đề)
TỔNG QUAN BÀI THI
Tên file
STT Tên bài Dữ liệu vào Kết quả ra Điểm
chương trình
1 DÃY SỐ DAYSO.* Nhập từ bàn phím In ra màn hình 3.5
2 TOP 3 TOP3.* Nhập từ bàn phím In ra màn hình 3.5
3 XAUCCDN XAUCCDN.* Nhập từ bàn phím In ra màn hình 4.5
4 UOCSNT UOCSNT.* Nhập từ bàn phím In ra màn hình 4.5
5 DAYCON DAYCON.* Nhập từ bàn phím In ra màn hình 4
Chú ý: Dấu * được thay thế bởi CPP, PY của ngôn ngữ lập trình được sử dụng tương ứng là
C/C++ hoặc Python.
- Thí sinh tạo thư mục có tên là Số báo danh của TS tại thư mục gốc ổ đĩa C. Thí sinh đặt tên
theo đúng như quy định trong đề thi.
BÀI 1: DÃY SỐ.
Viết chương trình nhập một dãy số nguyên.
a. Tính tổng các số chẵn và tổng các số lẻ và in kết quả ra màn hình.
b. Sắp xếp các phần tử của dãy theo thứ tự không giảm và đưa kết quả ra màn hình.
BÀI 2. TOP 3
Sở GD thành phố cần chọn 3 em học sinh có thành tích thể thao cao nhất để tuyên dương và
trao thưởng nhân dịp tổng kết năm học vừa qua dựa vào thành tích các trường tổng hợp gửi
lên.
Em hãy viết chương trình để chọn được 3 bạn có thành tích cao nhất biết rằng:
- Thành tích mỗi học sinh được qui đổi thành 1 số nguyên dương.
- Các học sinh đều có thành tích khác nhau.
Yêu cầu:
Nhập dữ liệu từ bàn phím và in kết quả lên màn hình.
Hàng 1: Chỉ số và thành tích của học sinh có thành tích cao nhất. Hàng 2: Chỉ số và thành
tích của học sinh có thành tích cao thứ 2. Hàng 3: Chỉ số và thành tích của học sinh có thành
tích cao thứ 3.
DeThiTinHoc.net Bộ 11 Đề thi Học sinh giỏi cấp Trường Tin học Lớp 10 (Có đáp án) - DeThiTinHoc.net
Ví dụ:
INPUT OUTPUT Giải thích
6 5 11
3 5 1 2 11 8 6 8
2 5
BÀI 3: XÂU CON CHUNG DÀI NHẤT.
Xâu A gọi là xâu con của xâu B nếu trong xâu B có một dãy ký tự liên tiếp đúng bằng xâu A.
Cho hai xâu s1 và s2 hãy viết chương trình để tìm xâu ketqua là xâu con chung dài nhất của
s1 và s2
Yêu cầu: Nhập dữ liệu từ bàn phím và in kết quả lên màn hình.
Ví dụ:
INPUT OUTPUT Giải thích
abcde123 abc
abfceabcxyz
BÀI 4: ƯỚC SỐ NGUYÊN TỐ.
Mỗi số đều có ít nhất 1 ước số là số nguyên tố. VD: số 6 có 2 ước nguyên tố là 2 và 3. Số 25
có ước nguyên tố là 5.
Em hãy viết chương trình tìm số nguyên có nhiều ước số là số nguyên tố nhất trong một dãy
số nguyên.
Yêu cầu: Viết 1 hàm kiểm tra số nguyên tố và 1 hàm tính tổng số ước nguyên tố của một số
nguyên.
Ví dụ:
INPUT OUTPUT
38 88 50 15 25 105 105
BÀI 5: DÃY CON.
Cho một danh sách các số nguyên. Viết một chương trình để tìm dãy con liên tiếp có tổng lớn
nhất trong danh sách đó.
Nhập dữ liệu từ bàn phím và in kết quả lên màn hình.
Ví dụ:
INPUT OUTPUT Giải thích
1, -2, 3, 4, -1, 2, 1, -5, 4 3, 4, -1, 2, 1
------------ HẾT ------------
DeThiTinHoc.net Bộ 11 Đề thi Học sinh giỏi cấp Trường Tin học Lớp 10 (Có đáp án) - DeThiTinHoc.net
ĐÁP ÁN
BÀI 1: DÃY SỐ.
Viết chương trình nhập một dãy số nguyên.
a. Tính tổng các số chẵn và tổng các số lẻ và in kết quả ra màn hình. (2 điểm)
b. Sắp xếp các phần tử của dãy theo thứ tự không giảm và đưa kết quả ra màn hình.(1,5 điểm)
Code tham khảo
# Nhập dãy số nguyên từ người dùng
arr = list(map(int, input("Nhập dãy số nguyên (cách nhau bằng dấu cách): ").split()))
# a. Tính tổng các số chẵn và tổng các số lẻ
sum_even = sum(num for num in arr if num % 2 == 0)
sum_odd = sum(num for num in arr if num % 2 != 0)
print(f"Tổng các số chẵn: {sum_even}")
print(f"Tổng các số lẻ: {sum_odd}")
# b. Sắp xếp dãy số theo thứ tự không giảm và in ra kết quả
arr_sorted = sorted(arr)
print(f"Dãy số sau khi sắp xếp theo thứ tự không giảm: {arr_sorted}")
BÀI 2. TOP 3
- Xử lý input và output thành công (1 đ)
- Xử lý tốt, ra kết quả đúng 2,5 điểm.
Số test chấm bài, mỗi test đúng được bao nhiêu điểm?
Code tham khảo
f1=open(r"d:hsg\bai1_int.txt", 'r') n=int(f1.readline())
mylist = f1.readline().split(' ') t1,t2,t3=0
id1,id2,id3=-1 for i in range(n):
k=int(mylist[i])
if k>t1:
t3=t2
id3=id2
t2=t1
id2=id1
t1=k
id1=i
elif k>t2:
t3=t2
id3=id2
t2=k id2=i
elif k>t3:
DeThiTinHoc.net Bộ 11 Đề thi Học sinh giỏi cấp Trường Tin học Lớp 10 (Có đáp án) - DeThiTinHoc.net
t3=k
id3=i
f2 = open(r"d:hsg\bai1_out.txt", 'w') f2.write(str(id1+1) +" "+ str(t1)+"\n")
f2.write(str(id2+1) +" "+ str(t2)+"\n" ) f2.write(str(id3+1) +" "+ str(t3)) f1.close
f2.close
BÀI 3: XÂU CON CHUNG DÀI NHẤT.
- Xử lý input và output thành công (1 đ)
- Xây dựng hàm xauconchungdainhat đúng 2,5 điểm
- Các xử lý còn lại 1 điểm
Lưu ý: Thí sinh có chương trình bố cục khác xử lý đúng vẫn cho điểm tương tự.
Code tham khảo
def xauconchungdainhat(s1, s2):
m, n = len(s1), len(s2)
# Bảng dp lưu trữ độ dài của chuỗi con chung
dp = [[0] * (n + 1) for _ in range(m + 1)]
max_len = 0 # Độ dài chuỗi con chung dài nhất
end_pos = 0 # Vị trí kết thúc của chuỗi con chung dài nhất trong s1
# Duyệt qua từng ký tự của s1 và s2
for i in range(1, m + 1):
for j in range(1, n + 1):
if s1[i - 1] == s2[j - 1]: # Nếu hai ký tự giống nhau
dp[i][j] = dp[i - 1][j - 1] + 1
if dp[i][j] > max_len: # Cập nhật nếu tìm được chuỗi con chung dài hơn
max_len = dp[i][j]
end_pos = i # Lưu vị trí kết thúc của chuỗi con chung dài nhất
else:
dp[i][j] = 0 # Nếu không giống nhau thì độ dài chuỗi con chung là 0
# Trả về chuỗi con chung dài nhất
return s1[end_pos - max_len:end_pos]
# Các xử lý khác.
BÀI 4: ƯỚC SỐ NGUYÊN TỐ.\
- Xử lý input và output thành công (1 đ)
- Viết hàm kiểm tra SNT đúng 1,25 điểm.
- Viết hàm tính các ước nguyên tố 1,25 điểm.
- Xử lý tốt chương trình chính tốt 1 điểm
DeThiTinHoc.net Bộ 11 Đề thi Học sinh giỏi cấp Trường Tin học Lớp 10 (Có đáp án) - DeThiTinHoc.net
Code tham khảo
import math
# Hàm kiểm tra xem một số có phải là số nguyên tố không def is_prime(n):
if n <= 1:
return False
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False return True
# Hàm tính các ước số nguyên tố của một số
def count_prime_factors(n):
prime_factors = set()
# Kiểm tra các ước số từ 2 đến căn bậc 2 của n for i in range(2, int(math.sqrt(n)) + 1):
while n % i == 0:
if is_prime(i):
prime_factors.add(i)
n //= i
# Nếu số còn lại lớn hơn 1, thì nó là một số nguyên tố
if n > 1 and is_prime(n):
prime_factors.add(n)
return len(prime_factors)
# Hàm tìm số có nhiều ước số là số nguyên tố nhất trong dãy số
def number_with_most_prime_factors(nums):
max_prime_factors = 0
result_number = None
for num in nums:
prime_factors_count = count_prime_factors(num)
if prime_factors_count > max_prime_factors:
max_prime_factors = prime_factors_count
result_number = num
return result_number
# Xử lý khác.
BÀI 5: DÃY CON.
- Xử lý input và output thành công (1 đ)
- Xử lý tốt chương trình cho kết quả đúng 3 điểm.
Cho một danh sách các số nguyên. Viết một chương trình để tìm dãy con liên tiếp có tổng lớn
nhất trong danh sách đó.
DeThiTinHoc.net Bộ 11 Đề thi Học sinh giỏi cấp Trường Tin học Lớp 10 (Có đáp án) - DeThiTinHoc.net
Code tham khảo
def find_max_subarray(arr):
# Kiểm tra nếu danh sách rỗng if len(arr) == 0:
return 0
# Khởi tạo giá trị ban đầu max_sum = arr[0] current_sum = arr[0]
# Duyệt qua các phần tử từ vị trí thứ 1 đến cuối mảng
for num in arr[1:]:
current_sum = max(num, current_sum + num) # Tính tổng con liên tiếp lớn nhất
max_sum = max(max_sum, current_sum) # Cập nhật tổng lớn nhất
return max_sum
# Xử lý khác
DeThiTinHoc.net Bộ 11 Đề thi Học sinh giỏi cấp Trường Tin học Lớp 10 (Có đáp án) - DeThiTinHoc.net
ĐỀ SỐ 2
SỞ GD VÀ ĐT HÀ NỘI ĐỀ THI HỌC SINH GIỎI CẤP TRƯỜNG
TRƯỜNG THPT PHAN HUY MÔN: TIN HỌC - LỚP 10
CHÚ - QUỐC OAI Thời gian: 120 phút, không kể thời gian phát đề
Bài 1: Tính tổng (3 điểm)
Viết chương trình nhập vào từ bàn phím một số nguyên không âm không vượt quá 999. Hãy
tính và đưa ra màn hình tổng các chữ số của số đó.
Dữ liệu nhập vào Kết quả
87 15
684 18
Bài 2: Diện tích khu vườn (3 điểm)
Một khu đất hình chữ nhật có cạnh là a và b (a < b). Người ta xây một khu vui chơi hình tròn
tại vị trí trong khu đất như hình vẽ. Viết chương trình tính diện tích khu đất còn lại (phần
gạch chéo) có diện tích bằng bao nhiêu. Biết rằng giá trị pi = 3.14
Dữ liệu nhập vào Kết quả
80 100 2976.0
100.5 120.8 4211.70375
Bài 3: Tính tiền điện (4 điểm)
Viết chương trình nhập chỉ số điện kế tháng trước (chiso1) và chỉ số điện kế tháng này
(chiso2), tính tiền điện tháng này cho hộ dân, biết rằng:
Mỗi kw trong 50 kw đầu tiên có đơn giá là 1893đ,
Từ kw thứ 51 đến kw thứ 100 có đơn giá 1956đ,
Từ kw thứ 101 trở lên có đơn giá 2271đ.
Dữ liệu nhập vào Kết quả
1060 1162 Tiền phải trả là: 196.992 đ
DeThiTinHoc.net Bộ 11 Đề thi Học sinh giỏi cấp Trường Tin học Lớp 10 (Có đáp án) - DeThiTinHoc.net
Bài 4: Số đặc biệt (4 điểm)
Nhập vào từ bàn phím số nguyên dương N. Kiểm tra xem N có phải được tạo bởi một số
không. Nếu N được tạo bởi một số trả lời “YES”, ngược lại trả lời “NO”.
Dữ liệu nhập vào Kết quả
34567777 NO
22222222 YES
Bài 5: Số nguyên tố (6 điểm)
Nhập vào từ bàn phím số nguyên dương M (2 <= M <= 64000)
Viết chương trình tính tổng của số nguyên tố lớn nhất không vượt quá M và số nguyên tố
nhỏ nhất còn lớn hơn M.
Dữ liệu nhập vào Kết quả
10 18
Giải thích:
Số nguyên tố lớn nhất không vượt quá 10 là 7
Số nguyên tố nhỏ nhất còn lớn hơn 10 là 11
7 + 11 = 18
----------HẾT----------
DeThiTinHoc.net Bộ 11 Đề thi Học sinh giỏi cấp Trường Tin học Lớp 10 (Có đáp án) - DeThiTinHoc.net
ĐÁP ÁN
Bài 1: Tính tổng
n=int(input())
print(n%10+(n//10)%10+(n//100))
Bài 2: Diện tích khu vườn
pi=3.14
a,b= map(float,input('Nhập 2 cạnh a, b: ').split())
s1=a*b
s2=(a/2)*(a/2)*pi #pi*r*r (r=a/2)
print("Diện tích còn lại: %.2f"%(s1-s2))
Bài 3: Tính tiền điện
chiso1, chiso2 = map(float,input('Nhập chỉ số tháng trước, chỉ số tháng này: ').split())
Ldtt=chiso2 - chiso1
if (Ldtt<= 50): Tien=Ldtt*1893
elif (Ldtt <=100): Tien = 50*1893+(Ldtt - 50)* 1956
else:
Tien = 50*1893 + 50*1956 + (Ldtt - 100)* 2271
print('Tiền phải trả là %8.2f'%Tien)
Bài 4: Số đặc biệt
n=int(input())
s=0
r=n%10
while n!=0:
if n%10!=r:
print("No")
break
n=n//10
else:print('Yes')
Bài 5: Số nguyên tố
n=int(input())
j1=n-1
while j1<n:
d=0
for i in range(2,j1):
if j1%i==0:
d=1
break
DeThiTinHoc.netFile đính kèm:
bo_11_de_thi_hoc_sinh_gioi_cap_truong_tin_hoc_lop_10_co_dap.docx
File chương trình Đề 10.rar

