Danh mục: 20 Đề thi cấp Tỉnh Tiền Giang

76 Đề thi HSG Tin 9 cấp Tỉnh Có đáp án mới nhất (File Word & PDF)

Bạn đang tìm kiếm nguồn tài liệu ôn thi học sinh giỏi Tin học lớp 9 để chuẩn bị cho kỳ thi cấp huyện, cấp tỉnh sắp tới? Việc luyện đề từ các tỉnh thành khác nhau là phương pháp hiệu quả nhất để làm quen với cấu trúc đề, các dạng bài lập trình khó và cách tối ưu thuật toán.

Bài viết này tổng hợp 76 đề thi HSG Tin 9 cấp tỉnh có đáp án chi tiết, giúp các bạn học sinh tự tin chinh phục giải cao.

Các đề ôn thi để chuẩn bị thi Cấp XÃ thì các em vào đường dẫn phía dưới để tham khảo giúp thầy nhé!

  1. Giải đề 1 và đáp án thi Học sinh giỏi tin học Python C++ THCS có tài liệu ôn thi
  2. Giải đề 2 và đáp án thi Học sinh giỏi tin học Python C++ THCS có tài liệu ôn thi
  3. Giải đề 3 thi học sinh giỏi tin học lập trình Python có đáp án
  4. Giải đề 4 ôn thi học sinh giỏi Tin Học THCS lập trình Python có đáp án
  5. Giải đề 5 và đáp án thi HSG Tin Python có số Pell.
  6. Giải đề 6 và đáp án bồi dưỡng học sinh giỏi tin 10 có số Armstrong
  7. Giải đề 7 và đáp án  thi học sinh giỏi tin học 10 Python có số Collatz
  8. Giải đề 8 trong 20 đề Bồi dưỡng học sinh giỏi Tin học lớp 9 có số Kaprekar.
  9. Giải đề 9 thi HSG Tin học lớp 8 lập trình Python có số Happy
  10. Giải đề 10 thi tin học trẻ THPT có bài  In các xâu con trong xâu s.

1. Tại sao cần luyện đề thi HSG Tin học 9 các năm trước?

Kỳ thi học sinh giỏi Tin học lớp 9 thường tập trung vào kỹ năng giải quyết vấn đề thông qua lập trình (Pascal, C++, hoặc Python). Việc luyện tập với bộ 76 đề thi HSG Tin 9 sẽ giúp bạn:

  • Nắm vững cấu trúc đề: Thông thường gồm 3-4 bài với độ khó tăng dần (bài toán số học, xử lý xâu, quy hoạch động, đồ thị cơ bản).

  • Rèn luyện tư duy thuật toán: Tiếp cận với nhiều dạng bài mới lạ từ các tỉnh thành có phong trào Tin học mạnh như Nghệ An, Thanh Hóa, Hà Nội, Nam Định…

  • Kỹ năng trình bày: Xem đáp án chi tiết giúp bạn hiểu cách chấm điểm và tối ưu mã nguồn để đạt điểm tối đa.


2. Cấu trúc bộ đề thi HSG Tin 9 trong bộ sưu tập này

Bộ tài liệu 76 đề thi HSG Tin 9 cấp tỉnh có đáp án được chúng tôi sưu tầm và biên soạn lại một cách khoa học:

  • Đa dạng ngôn ngữ: Hỗ trợ lời giải bằng Pascal, C++ (phổ biến nhất) và một số đề mới có hướng dẫn bằng Python.

  • Phân loại theo chuyên đề: * Bài tập về số học (Số nguyên tố, số chính phương, số đặc biệt).

    • Xử lý xâu ký tự và tệp dữ liệu.

    • Thuật toán tìm kiếm và sắp xếp.

    • Kỹ thuật đệ quy và quy hoạch động cơ bản.

  • Có đáp án và hướng dẫn chấm: Giúp học sinh và giáo viên dễ dàng đối chiếu kết quả.


3. Danh sách một số đề thi tiêu biểu trong bộ 76 đề

Dưới đây là một số đề thi “hot” nhất trong bộ sưu tập mà bạn không nên bỏ qua:

  1. Đề thi HSG Tin 9 tỉnh Nghệ An (Bảng A, B).

  2. Đề thi HSG Tin 9 tỉnh Thanh Hóa (Đầy đủ các năm).

  3. Đề thi chọn đội tuyển HSG lớp 9 TP. Hà Nội.

  4. Đề thi giao lưu học sinh giỏi các tỉnh đồng bằng Bắc Bộ.

  5. Đề thi tuyển sinh vào lớp 10 chuyên Tin (Phần tự chọn HSG 9).


4. Link tải 76 Đề thi HSG Tin 9 cấp Tỉnh Có đáp án (Full File Word/PDF)

Để hỗ trợ các bạn ôn tập tốt nhất, chúng tôi đã đóng gói toàn bộ 76 đề thi vào một thư mục duy nhất. Bạn có thể tải về hoàn toàn miễn phí theo đường link dưới đây:

[Link Tải Xuống 76 Đề Thi HSG Tin 9 Có Đáp Án Tại Đây]

tai ngay vi tính tấn dân

(Lưu ý: Nếu link lỗi, vui lòng để lại bình luận phía dưới để admin cập nhật ngay lập tức).


5. Kinh nghiệm đạt điểm cao trong kỳ thi HSG Tin học 9

Ngoài việc luyện đề, bạn cần lưu ý:

  1. Đọc kỹ đề bài: Xác định rõ ràng Input, Output và các giới hạn (Constraints) của đề.

  2. Quản lý thời gian: Đừng quá sa đà vào bài khó, hãy hoàn thành chắc chắn các bài dễ để lấy điểm tuyệt đối trước.

  3. Kiểm tra kỹ các trường hợp biên: Test thử với dữ liệu nhỏ nhất, lớn nhất hoặc các trường hợp đặc biệt (n = 0, n = 1…).

  4. Cập nhật ngôn ngữ: Hiện nay nhiều tỉnh đã cho phép sử dụng C++11, C++17 và Python, hãy tận dụng các thư viện mạnh mẽ để rút ngắn thời gian làm bài.

Lời kết: Hy vọng bộ tài liệu 76 đề thi HSG Tin 9 cấp tỉnh có đáp án này sẽ là hành trang vững chắc giúp các bạn đạt kết quả cao trong kỳ thi sắp tới. Nếu thấy tài liệu hữu ích, hãy chia sẻ cho bạn bè cùng ôn tập nhé!

Giải đáp án bài 1: Tiền Điện

📌 Phân tích đề bài (tư duy giải)

  • n hộ gia đình, mỗi hộ dùng aᵢ KWh điện.

  • Giá điện chia 3 bậc:

BậcSố KWhGiá
11 → 1002500 đ/KWh
2101 → 2003000 đ/KWh
3≥ 2013500 đ/KWh

👉 Với mỗi hộ, ta:

  • Tính tiền bậc 1 (tối đa 100 KWh)

  • Nếu còn → tính tiếp bậc 2 (tối đa 100 KWh)

  • Nếu còn nữa → bậc 3

👉 Cộng tiền của tất cả các hộ lại.


🧠 Thuật toán

Với mỗi a (số KWh của 1 hộ):

  • Nếu a ≤ 100
    → tiền = a * 2500

  • Nếu 100 < a ≤ 200
    → tiền = 100*2500 + (a-100)*3000

  • Nếu a > 200
    → tiền = 100*2500 + 100*3000 + (a-200)*3500

Code Python (chuẩn thi)

import sys

sys.stdin = open("ELCOST.INP", "r")
sys.stdout = open("ELCOST.OUT", "w")

# Đọc số hộ gia đình
n = int(sys.stdin.readline().strip())

# Đọc danh sách số KWh của các hộ
danh_sach = list(map(int, sys.stdin.readline().split()))

tong_tien = 0

for a in danh_sach:
    if a <= 100:
        tien = a * 2500
    elif a <= 200:
        tien = 100 * 2500 + (a - 100) * 3000
    else:
        tien = 100 * 2500 + 100 * 3000 + (a - 200) * 3500

    tong_tien += tien

# In kết quả
print(tong_tien)

✍️ Giải thích code ngắn gọn

  • sys.stdin, sys.stdout → đúng chuẩn chấm bài tự động

  • Duyệt từng hộ → tính tiền đúng theo bậc

  • Cộng dồn vào tong_tien

  • In ra một số nguyên duy nhất


⏱️ Phân tích độ phức tạp

  • Vòng lặp chạy n lần

  • Mỗi lần chỉ tính toán hằng số

👉 Độ phức tạp thời gian:

O(n)

👉 Độ phức tạp bộ nhớ:

O(1) 


✅ Nhận xét theo chuẩn bài thi HSG

✔ Thuật toán đơn giản – đúng bản chất
✔ Không bị tràn số
✔ Chạy nhanh với n ≤ 10^4
✔ Dễ mở rộng nếu đề thêm bậc điện

Giải đáp án bài 2: Độ mạnh của xâu?

🔍 Phân tích đề bài

  • Cho xâu s gồm:

    • Chữ cái thường a–z

    • Chữ số 0–9

  • Không có khoảng trắng, không có ký tự đặc biệt

  • Độ dài xâu ≤ 10^3

👉 Định nghĩa “độ mạnh của xâu”

Độ mạnh=(số kí tự phân biệt×(số lần xuất hiện nhiều nhất của 1kí tự )


🧠 Tư duy giải

Ta cần 2 thông tin:

  1. Số kí tự phân biệt trong xâu

    • Chính là số lượng kí tự khác nhau

  2. Số lần xuất hiện nhiều nhất

    • Tìm kí tự xuất hiện nhiều nhất

👉 Cách làm hiệu quả:

  • Dùng dictionary (từ điển) để đếm số lần xuất hiện của từng kí tự

 

Code Python (chuẩn thi)

import sys

sys.stdin = open("STRONG.INP", "r")
sys.stdout = open("STRONG.OUT", "w")

# Đọc xâu
s = sys.stdin.readline().strip()

dem = {}

# Đếm số lần xuất hiện của từng kí tự
for ch in s:
    if ch in dem:
        dem[ch] += 1
    else:
        dem[ch] = 1

# Số kí tự phân biệt
so_ki_tu_phan_biet = len(dem)

# Số lần xuất hiện nhiều nhất
lan_xuat_hien_nhieu_nhat = max(dem.values())

# Độ mạnh của xâu
do_manh = so_ki_tu_phan_biet * lan_xuat_hien_nhieu_nhat

print(do_manh)

✍️ Giải thích code

  • dem: từ điển lưu

    khóa = kí tự
    giá trị = số lần xuất hiện

  • len(dem) → số kí tự phân biệt

  • max(dem.values()) → tần suất lớn nhất

  • Nhân 2 giá trị → độ mạnh


🧪 Kiểm tra bằng ví dụ đề bài

Ví dụ 1

STRONG.INP
xy11z2yyzxy0y
  • Kí tự phân biệt: {x, y, 1, z, 2, 0} → 6

  • Kí tự xuất hiện nhiều nhất: y → 5 lần
    👉 Kết quả: 6 * 5 = 30

Ví dụ 2

STRONG.INP
ggggg
  • Phân biệt: 1

  • Xuất hiện nhiều nhất: 5
    👉 Kết quả: 1 * 5 = 5


⏱️ Phân tích độ phức tạp

  • Duyệt xâu độ dài n đúng 1 lần

👉 Thời gian:

O(n)

👉 Bộ nhớ:

O(k)≤O(n)

(với k là số kí tự phân biệt)


✅ Nhận xét theo chuẩn HSG

✔ Thuật toán đơn giản – đúng bản chất
✔ Không dùng thư viện nâng cao
✔ Chạy rất nhanh với n ≤ 1000
✔ Dễ trình bày trong bài thi

📌 Giải Đáp Án Bài 3: Tổng dòng cột (SUM)

🔍 Nội dung đề bài (tóm tắt)

  • Cho ma trận a gồm m dòng và n cột.

  • Tạo ma trận b theo công thức:

bij=(tổng doˋng i của a+tổng cột j của a)−aijb_{ij}

👉 Yêu cầu

Tìm giá trị nhỏ nhất trong ma trận b.


🧠 Tư duy giải (rất quan trọng – hay ra thi)

Nếu làm ngây thơ:

  • Với mỗi ô (i, j) lại đi tính tổng dòng + tổng cột
    ❌ → chậm: O(m*n*(m+n))dễ TLE

👉 Cách làm đúng chuẩn HSG:

Bước 1:

  • Tính tổng từng dòng → mảng tong_dong[i]

  • Tính tổng từng cột → mảng tong_cot[j]

Bước 2:

  • Với mỗi ô (i, j):

bij=tong_dong[i]+tong_cot[j]−a[i][j]

  • Cập nhật giá trị nhỏ nhất

⚡ Không cần lưu ma trận b → tiết kiệm bộ nhớ

Code Python (chuẩn thi)

import sys

sys.stdin = open("SUM.INP", "r")
sys.stdout = open("SUM.OUT", "w")

# Đọc m, n
m, n = map(int, sys.stdin.readline().split())

# Đọc ma trận a
a = []
for _ in range(m):
    a.append(list(map(int, sys.stdin.readline().split())))

# Tính tổng từng dòng
tong_dong = [0] * m
for i in range(m):
    tong_dong[i] = sum(a[i])

# Tính tổng từng cột
tong_cot = [0] * n
for j in range(n):
    for i in range(m):
        tong_cot[j] += a[i][j]

# Tìm giá trị nhỏ nhất trong ma trận b
INF = 10**18
min_b = INF

for i in range(m):
    for j in range(n):
        b_ij = tong_dong[i] + tong_cot[j] - a[i][j]
        if b_ij < min_b:
            min_b = b_ij

print(min_b)

✍️ Giải thích code ngắn gọn

  • tong_dong[i]: tổng dòng i

  • tong_cot[j]: tổng cột j

  • Với mỗi ô (i, j):

    • Áp dụng đúng công thức đề

    • Cập nhật min_b

  • Không cần tạo ma trận btối ưu


⏱️ Phân tích độ phức tạp

  • Tính tổng dòng: O(mn)

  • Tính tổng cột: O(mn)

  • Duyệt tìm min: O(mn)

👉 Tổng thời gian:

O(m×n)

👉 Bộ nhớ:

O(m+n)


✅ Nhận xét chuẩn HSG

✔ Áp dụng tiền xử lý (precompute)
✔ Tránh lặp thừa – tư duy tối ưu
✔ Phù hợp ma trận lớn
✔ Rất dễ ăn trọn 4 điểm

📌 Bài 4: Xâu lặp (SUBSTR)

🔍 Tóm tắt dạng bài (chuẩn đề Tiền Giang)

  • Cho một xâu s (chỉ gồm chữ thường và chữ số, không có khoảng trắng)

  • Xâu có độ dài ≤ 10^3

  • Yêu cầu:
    👉 Tìm xâu con dài nhất xuất hiện ít nhất 2 lần trong s
    (cho phép chồng lấn)

Đây là dạng bài xâu lặp (longest repeated substring) – rất hay ra thi tỉnh.


🧠 Tư duy giải (đúng mức THCS – không dùng suffix array)

|s| ≤ 1000, ta có thể dùng cách duyệt độ dài + kiểm tra trùng:

Ý tưởng:

  1. Duyệt độ dài xâu con L từ lớn xuống nhỏ

  2. Với mỗi L, duyệt tất cả các xâu con độ dài L

  3. Dùng set để kiểm tra:

    • Nếu một xâu con đã xuất hiện → tìm được đáp án

  4. Gặp độ dài lớn nhất đầu tiên → dừng luôn

👉 Cách này dễ cài, dễ trình bày, đủ nhanh cho đề tỉnh.

import sys

sys.stdin = open("SUBSTR.INP", "r")
sys.stdout = open("SUBSTR.OUT", "w")

s = sys.stdin.readline().strip()
n = len(s)

ket_qua = ""

# Duyệt độ dài xâu con từ lớn xuống nhỏ
for L in range(n - 1, 0, -1):
    tap_con = set()
    found = False

    for i in range(n - L + 1):
        sub = s[i:i+L]
        if sub in tap_con:
            ket_qua = sub
            found = True
            break
        tap_con.add(sub)

    if found:
        break

print(ket_qua)

✍️ Giải thích code

  • Duyệt L từ n-11
    → đảm bảo lấy xâu dài nhất

  • Với mỗi L:

    • Cắt các xâu con s[i:i+L]

    • Dùng set để kiểm tra trùng

  • Khi phát hiện xâu lặp đầu tiên → in ra ngay


🧪 Ví dụ minh họa

Ví dụ

SUBSTR.INP
abababa

Các xâu lặp dài nhất:

  • "ababa" xuất hiện 2 lần (chồng lấn)

👉 Kết quả:

SUBSTR.OUT
ababa

⏱️ Phân tích độ phức tạp

  • Duyệt độ dài: O(n)

  • Với mỗi độ dài, duyệt xâu con: O(n)

  • Cắt xâu + set: O(n)

👉 Tổng:

O(n3) (với n≤1000 là chấp nhận được)

👉 Bộ nhớ:

O(n2)


✅ Nhận xét chuẩn HSG

✔ Không dùng thuật toán nâng cao (suffix array, Z, KMP)
✔ Dễ hiểu – dễ chép vào bài thi
✔ Đủ nhanh với dữ liệu đề tỉnh
✔ Trình bày rất “ăn điểm”

📌Giải Đáp Án Bài 5: Phần thưởng (GIFT)

🔍 Phân tích đề bài

  • một dãy số là giá trị các phần thưởng (sắp theo một hàng).

  • Mỗi phần thưởng có giá trị từ 1 đến 10^9.

  • An muốn chọn một đoạn liên tiếp sao cho:
    👉 giá trị tăng dần liên tiếp
    (tức là: số sau lớn hơn số trước).

👉 Yêu cầu

Tìm độ dài lớn nhất của đoạn tăng dần liên tiếp.

📌 Lưu ý:

  • Chỉ xét liên tiếp

  • Không cần tăng đúng 1, chỉ cần lớn hơn


🧠 Tư duy giải (rất chuẩn thi)

Đây là bài:

Dãy con tăng liên tiếp dài nhất

👉 Không cần quy hoạch động phức tạp.

Ý tưởng:

  • Duyệt từ trái sang phải

  • Nếu a[i] > a[i-1]:

    • tăng độ dài đoạn hiện tại

  • Ngược lại:

    • bắt đầu đoạn mới

  • Luôn cập nhật độ dài lớn nhất

import sys

sys.stdin = open("GIFT.INP", "r")
sys.stdout = open("GIFT.OUT", "w")

# Đọc dãy phần thưởng
a = list(map(int, sys.stdin.readline().split()))
n = len(a)

# Nếu dãy rỗng (trường hợp hiếm)
if n == 0:
    print(0)
else:
    max_len = 1      # độ dài lớn nhất
    cur_len = 1      # độ dài đoạn hiện tại

    for i in range(1, n):
        if a[i] > a[i - 1]:
            cur_len += 1
        else:
            cur_len = 1

        if cur_len > max_len:
            max_len = cur_len

    print(max_len)

✍️ Giải thích code

  • cur_len: độ dài đoạn tăng dần đang xét

  • max_len: kết quả lớn nhất

  • Khi gặp a[i] ≤ a[i-1]:

    • chuỗi tăng bị phá vỡ → reset cur_len = 1

  • Duyệt xong là ra kết quả


🧪 Kiểm tra ví dụ đề bài

Ví dụ 1

GIFT.INP
2 4 3 5 7 8 6

Đoạn tăng dài nhất:

3 5 7 8

👉 Độ dài = 4


Ví dụ 2

GIFT.INP
1 5 4 3 5 6 6 5 8 6

Đoạn tăng dài nhất:

3 5 6

👉 Độ dài = 3


⏱️ Phân tích độ phức tạp

  • Duyệt dãy 1 lần

👉 Thời gian:

O(n)

👉 Bộ nhớ:

O(1)


✅ Nhận xét chuẩn HSG

✔ Bài điển hình – dễ ăn điểm
✔ Không cần mảng phụ
✔ Chạy rất nhanh dù n lớn
✔ Trình bày rõ ràng, sạch sẽ

Nếu bạn thấy hay ! xin bạn 1 phút ! vui lòng đánh giá 5 sao cho trang website của chúng tôi ! để có động lực làm thêm nhiều bài hay nữa ! cảm ơn quý khách nhé !

Khóa học Python online từ cơ bản đến nâng cao

 

Khóa học Python online từ cơ bản đến nâng cao

Câu hỏi thường gặp về đề thi HSG Tin 9:

  • Bộ 76 đề thi HSG Tin 9 này có kèm đáp án không? Dạ có, toàn bộ 76 đề thi trong bộ sưu tập đều đi kèm đáp án chi tiết và hướng dẫn giải thuật bằng các ngôn ngữ phổ biến như Pascal, C++, Python.

  • Tài liệu này có bao gồm đề thi của những năm gần đây không? Có, bộ tài liệu được cập nhật các đề thi HSG cấp tỉnh mới nhất (năm học 2023-2024 và 2024-2025) từ các tỉnh thành có phong trào Tin học mạnh.

  • Tôi có thể tải file Word để về chỉnh sửa không? Được ạ, link tải bao gồm cả định dạng PDF để xem nhanh và file Word (.docx) để quý thầy cô và các bạn học sinh tiện trích dẫn, chỉnh sửa đề bài.

  • Luyện đề thi HSG Tin 9 nên tập trung vào ngôn ngữ nào? Hiện nay hầu hết các tỉnh đã chuyển sang C++ và Python. Tuy nhiên, bộ đề vẫn giữ lại các lời giải bằng Pascal cho những địa phương chưa thay đổi hình thức thi.

 

 

73 Đề thi HSG Tin học Python THCS cấp tỉnh Tiền Giang có ĐÁP ÁN (Mới & Chọn Lọc)

Nếu bạn đang ôn thi học sinh giỏi Tin học THCS cấp tỉnh Tiền Giang, đặc biệt là thi lập trình Python, thì bài viết này sinh ra là dành cho bạn.

Trong bài này, Vi Tính Tân Dân đã tổng hợp 73 đề thi HSG Tin học Python THCS cấp tỉnh Tiền Giang, kèm đáp án – code giải chi tiết – giải thích thuật toán rõ ràng, bám sát đúng cấu trúc đề thi thực tế của Sở GD&ĐT Tiền Giang.

👉 Phù hợp cho:

  • Học sinh lớp 6 – 9 ôn thi HSG Tin học

  • Học sinh luyện thi vào lớp 10 chuyên Tin

  • Giáo viên, phụ huynh bồi dưỡng học sinh năng khiếu Tin học

 

73 Đề thi HSG Tin học Python THCS cấp tỉnh Tiền Giang 73 Đề thi HSG Tin học Python THCS cấp tỉnh Tiền Giang 73 Đề thi HSG Tin học Python THCS cấp tỉnh Tiền Giang

 


🎯 Vì sao nên luyện bộ 73 đề thi HSG Tin học Python THCS cấp tỉnh Tiền Giang này?

Không giống các bộ đề tràn lan trên mạng, bộ đề này được chọn lọc kỹ, đảm bảo:

Đúng chuẩn đề thi Tin học THCS cấp tỉnh Tiền Giang
✅ Ngôn ngữ Python – đúng yêu cầu thi thực tế
✅ Có đáp án + code mẫu
✅ Giải thích tư duy thuật toán, không chỉ cho code
✅ Từ dễ → trung bình → khó, giúp nâng trình rõ rệt

👉 Rất nhiều học sinh học Python nhưng không biết ra đề thi thật trông như thế nào. Bộ đề này giúp bạn làm quen đề chuẩn – tránh bỡ ngỡ khi đi thi.


📚 Nội dung chính trong 73 đề thi HSG Tin học Python THCS

Bộ đề bao phủ toàn bộ kiến thức trọng tâm thường ra trong các kỳ thi HSG Tin học cấp tỉnh:

🔹 1. Xử lý số & toán học trong Python

    1. Đọc số nguyên x từ file NUM.INP.
    2. Duyệt hai số a và b trong phạm vi [1, x], đảm bảo a ≤ b.
    3. Kiểm tra điều kiện a * b == x và a / b ≥ 0.5.
    4. Nếu tìm thấy cặp (a, b) thỏa mãn, gán la_ket_doi = 1 và dừng vòng lặp.
    5. Ghi kết quả 1 vào NUM.OUT nếu x là số kết đôi, ngược lại ghi 0.

🔹 2. Xử lý ngày tháng năm

    1. Đọc dữ liệu từ file CUP.INP, bao gồm:
      • Ngày hiện tại (định dạng dd.mm.yyyy).
      • Số ngày cần cộng thêm.
    2. Chuyển đổi ngày hiện tại thành kiểu datetime.
    3. Cộng thêm số ngày vào ngày hiện tại bằng timedelta(days=so_ngay_them).
    4. Xuất kết quả với định dạng dd.mm.yyyy ra file CUP.OUT.

🔹 3. Chuỗi ký tự (String)

    1. Đọc dữ liệu từ file PART.INP, gồm:
      • n, L, R: số phần tử của mảng và khoảng cần kiểm tra.
      • Mảng a chứa n số nguyên.
    2. Duyệt qua từng phần tử a[i] của mảng:
      • Xét các chỉ số j trong phạm vi [i+L, i+R].
      • Nếu a[i] == a[j] + a[j-1], tăng biến đếm và dừng kiểm tra tiếp theo.
    3. Xuất kết quả ra file PART.OUT.

🔹 4. Xử lý Xâu

  • Đọc dữ liệu từ file PW.INP:
    • Số nguyên n là số xâu.
    • n xâu ký tự chứa chỉ các chữ cái thường (a-z).

      Sắp xếp các xâu theo độ dài tăng dần.

      Duyệt từng xâu trong danh sách:

    • Kiểm tra xem xâu đó có chứa tất cả các xâu khác hay không.
    • Nếu có, in ra xâu đó và dừng lại.

      Nếu không có xâu nào phù hợp, in -1.

🔹 5. Thuật toán cơ bản – nâng cao

    1. Đọc dữ liệu từ COVID.INP:
      • n: số người trên đường.
      • a: danh sách tọa độ của n người.
    2. Sắp xếp danh sách tọa độ theo thứ tự tăng dần.
    3. Tính toán khoảng cách giữa các vị trí:
      • Khoảng cách nhỏ nhất giữa hai người gần nhau nhất.
      • Khoảng cách lớn nhất giữa người đầu và người cuối.
    4. Tính số nhóm nhiễm bệnh dựa trên khoảng cách:
      • Tối thiểu: nếu khoảng cách nhỏ nhất là d, thì nhóm nhiễm bệnh sẽ là (d // 2) + 1.
      • Tối đa: nếu khoảng cách lớn nhất là D, thì nhóm nhiễm bệnh sẽ là (D // 2) + 1.
    5. In kết quả.

🧠 Có gì trong phần ĐÁP ÁN & CODE GIẢI?

Điểm mạnh nhất của bộ tài liệu này là không chỉ có đáp án, mà còn:

✔️ Code Python rõ ràng – đúng chuẩn thi
✔️ Có import sys, đọc ghi file đúng format đề tỉnh
✔️ Giải thích từng bước tư duy
✔️ Phân tích độ phức tạp thuật toán
✔️ Chú thích bằng tiếng Việt dễ hiểu cho học sinh THCS

👉 Phù hợp cả với:

  • Học sinh tự học tại nhà

  • Giáo viên soạn tài liệu bồi dưỡng

  • Phụ huynh theo dõi quá trình học của con


🏆 Lợi ích khi luyện trọn bộ 73 đề này

📌 Nắm chắc cấu trúc đề thi HSG Tin học tỉnh Tiền Giang
📌 Tăng khả năng tư duy thuật toán – không học vẹt
📌 Làm quen cách trình bày code đúng chuẩn chấm thi
📌 Tự tin khi bước vào kỳ thi chính thức
📌 Rút ngắn rất nhiều thời gian ôn tập

👉 Rất nhiều học sinh từng đạt giải cấp huyện – cấp tỉnh đã luyện theo đúng dạng đề như trong bộ này.


👨‍🏫 Ai nên sử dụng bộ đề này?

✔️ Học sinh THCS yêu thích Tin học
✔️ Học sinh đang học Python để thi HSG
✔️ Học sinh ôn thi vào lớp 10 chuyên Tin
✔️ Giáo viên Tin học THCS
✔️ Trung tâm bồi dưỡng học sinh giỏi Tin học


🚀 Kết luận

Bộ 73 Đề thi HSG Tin học Python THCS cấp tỉnh Tiền Giang có ĐÁP ÁNtài liệu cực kỳ giá trị nếu bạn đang nghiêm túc theo đuổi con đường học sinh giỏi Tin học.

👉 Nếu bạn muốn:

  • Học đúng trọng tâm

  • Luyện đúng dạng đề

  • Hiểu bản chất thuật toán

👉 Đừng bỏ qua bộ đề này.

📌 Theo dõi vitinhtandan.com để cập nhật thêm:

  • Đề thi HSG Tin học mới

  • Code Python giải chi tiết

  • Tài liệu ôn thi chuyên Tin từ cơ bản đến nâng cao

ĐÁP ÁN CÂU 1: Số Kết Đôi

 

import sys

sys.stdin = open("NUM.INP", "r")
sys.stdout = open("NUM.OUT", "w")

# Doc so x
x = int(sys.stdin.readline().strip())

# Kiem tra so ket doi
la_ket_doi = 0
for a in range(1, x + 1):
    for b in range(a, x + 1):
        if a * b == x and a / b >= 0.5:
            la_ket_doi = 1
            break
    if la_ket_doi:
        break

# Ghi ket qua
print(la_ket_doi)

1️⃣ Ý tưởng thuật toán

Ta cần kiểm tra số nguyên dương x có tồn tại hai số nguyên dương a, b sao cho:

  • a×b=x

  • a≤b

  • a/b≥0.5

Nếu tồn tại ít nhất một cặp (a, b) thỏa mãn thì x là số kết đôi → in 1, ngược lại in 0.


2️⃣ Phân tích từng bước chương trình

🔹 Bước 1: Đọc dữ liệu

x = int(sys.stdin.readline().strip())

Đọc số nguyên dương x từ file NUM.INP.


🔹 Bước 2: Duyệt các cặp (a, b)

for a in range(1, x + 1):
for b in range(a, x + 1):
  • a chạy từ 1 đến x

  • b chạy từ a đến x → đảm bảo a ≤ b, tránh xét trùng cặp


🔹 Bước 3: Kiểm tra điều kiện số kết đôi

if a * b == x and a / b >= 0.5:
  • a * b == x → (a, b) là một cặp ước của x

  • a / b ≥ 0.5 → đúng điều kiện đề bài

👉 Nếu thỏa mãn:

  • Gán la_ket_doi = 1

  • Dừng vòng lặp ngay (không cần xét thêm)


🔹 Bước 4: Xuất kết quả

print(la_ket_doi)
  • In 1 nếu x là số kết đôi

  • In 0 nếu không tồn tại cặp nào thỏa


3️⃣ Độ phức tạp thuật toán

⏱️ Thời gian chạy

  • Vòng a: chạy tối đa x lần

  • Với mỗi a, vòng b: chạy tối đa x − a + 1 lần

👉 Trường hợp xấu nhất:

O(x^2)


💾 Bộ nhớ sử dụng

  • Chỉ dùng vài biến đơn giản (x, a, b, la_ket_doi)

  • Không dùng mảng hay cấu trúc phức tạp

👉 Độ phức tạp bộ nhớ:

O(1)


4️⃣ Nhận xét theo góc nhìn bài thi

✔️ Thuật toán:

  • Dễ hiểu

  • Dễ cài đặt

  • Phù hợp mức THCS – HSG cấp huyện/tỉnh

⚠️ Nhược điểm:

  • Với x lớn → chạy chậm do O(x²)

👉 Trong bài thi nâng cao, có thể tối ưu bằng cách chỉ duyệt đến √x, nhưng đáp án này hoàn toàn hợp lệ nếu đề không yêu cầu tối ưu.

ĐÁP ÁN CÂU 2: Word Cup

 

import sys
from datetime import datetime, timedelta

sys.stdin = open("CUP.INP", "r")
sys.stdout = open("CUP.OUT", "w")

# Doc du lieu
ngay_hien_tai = sys.stdin.readline().strip()
so_ngay_them = int(sys.stdin.readline().strip())

# Chuyen doi ngay thanh doi tuong datetime
ngay_hien_tai = datetime.strptime(ngay_hien_tai, "%d.%m.%Y")

# Cong them so ngay
ngay_tuong_lai = ngay_hien_tai + timedelta(days=so_ngay_them)

# In ket qua theo dinh dang dd.mm.yyyy
print(ngay_tuong_lai.strftime("%d.%m.%Y"))

1️⃣ Ý tưởng thuật toán

Bài toán yêu cầu:

  • Cho một ngày hiện tại (định dạng dd.mm.yyyy)

  • Cho số ngày cần cộng thêm

  • Tính và in ra ngày tương lai sau khi cộng số ngày đó

👉 Đây là bài toán xử lý ngày tháng, cần xét đúng:

  • Tháng có 28, 29, 30 hay 31 ngày

  • Năm nhuận

➡️ Ta sử dụng thư viện datetime của Python để xử lý chính xác và gọn nhẹ.


2️⃣ Phân tích từng bước chương trình

🔹 Bước 1: Đọc dữ liệu vào

ngay_hien_tai = sys.stdin.readline().strip()
so_ngay_them = int(sys.stdin.readline().strip())
  • ngay_hien_tai: chuỗi ngày theo dạng dd.mm.yyyy

  • so_ngay_them: số nguyên – số ngày cần cộng thêm


🔹 Bước 2: Chuyển chuỗi ngày sang kiểu datetime

ngay_hien_tai = datetime.strptime(ngay_hien_tai, "%d.%m.%Y")
  • strptime giúp chuyển chuỗi → đối tượng datetime

  • Định dạng %d.%m.%Y tương ứng:

    • %d: ngày

    • %m: tháng

    • %Y: năm

➡️ Sau bước này, Python hiểu đúng cấu trúc ngày tháng, kể cả năm nhuận.


🔹 Bước 3: Cộng thêm số ngày

ngay_tuong_lai = ngay_hien_tai + timedelta(days=so_ngay_them)
  • timedelta(days=so_ngay_them) biểu diễn khoảng thời gian cần cộng

  • Python tự động:

    • Chuyển tháng

    • Chuyển năm

    • Xử lý năm nhuận

➡️ Không cần tự viết kiểm tra ngày/tháng phức tạp.


🔹 Bước 4: In kết quả đúng định dạng

print(ngay_tuong_lai.strftime("%d.%m.%Y"))
  • strftime chuyển datetime → chuỗi

  • Định dạng đúng yêu cầu đề bài: dd.mm.yyyy


3️⃣ Độ phức tạp thuật toán

⏱️ Thời gian chạy

  • Đọc dữ liệu: O(1)

  • Chuyển đổi ngày: O(1)

  • Cộng ngày: O(1)

  • In kết quả: O(1)

👉 Tổng thời gian chạy:

O(1)


💾 Bộ nhớ sử dụng

  • Chỉ dùng vài biến kiểu đơn giản (datetime, int)

  • Không dùng mảng hay vòng lặp

👉 Độ phức tạp bộ nhớ:

O(1)


4️⃣ Nhận xét theo chuẩn bài thi

✔️ Ưu điểm:

  • Code ngắn gọn

  • Chính xác tuyệt đối (kể cả năm nhuận)

  • Tránh lỗi khi xử lý ngày/tháng

  • Rất phù hợp bài thi HSG THCS

⚠️ Lưu ý:

  • Cách làm này phụ thuộc thư viện datetime

  • Nếu đề cấm dùng thư viện, phải tự xử lý ngày tháng (phức tạp hơn)

ĐÁP ÁN CÂU 3: Phần Tử Điển Hình

 

import sys

sys.stdin = open("PART.INP", "r")
sys.stdout = open("PART.OUT", "w")

# Doc du lieu
n, L, R = map(int, sys.stdin.readline().split())
a = list(map(int, sys.stdin.readline().split()))

# Dem so phan tu dien hinh
dem = 0
for i in range(n):
    for j in range(i + L, min(i + R + 1, n)):  # Xet cac khoang tu L den R
        if a[i] == a[j] + a[j - 1]:
            dem += 1
            break  # Neu da la phan tu dien hinh thi khong xet tiep

# In ket qua
print(dem)

1️⃣ Ý tưởng thuật toán

Bài toán cho:

  • Số phần tử n

  • Hai số nguyên L, R

  • Mảng số nguyên a[0…n-1]

Một phần tử điển hình tại vị trí i là phần tử thỏa mãn:

∃ j sao cho i+L≤j≤i+R vaˋ a[i]=a[j]+a[j−1]\exists\ j \ \text{sao cho} \ i + L \le j \le i + R \ \text{và} \ a[i] = a[j] + a[j-1]

👉 Nhiệm vụ: đếm số phần tử điển hình trong mảng.


2️⃣ Phân tích từng bước chương trình

🔹 Bước 1: Đọc dữ liệu

n, L, R = map(int, sys.stdin.readline().split())
a = list(map(int, sys.stdin.readline().split()))
  • n: số phần tử của mảng

  • L, R: giới hạn khoảng xét

  • a: mảng gồm n số nguyên


🔹 Bước 2: Khởi tạo biến đếm

dem = 0

Biến dem dùng để đếm số phần tử điển hình.


🔹 Bước 3: Duyệt từng phần tử a[i]

for i in range(n):

Xét từng vị trí i trong mảng làm ứng viên phần tử điển hình.


🔹 Bước 4: Duyệt các chỉ số j phù hợp

for j in range(i + L, min(i + R + 1, n)):
  • j ≥ i + L

  • j ≤ i + R

  • j < n (tránh vượt chỉ số mảng)

👉 Đảm bảo đúng điều kiện đề bài.


🔹 Bước 5: Kiểm tra điều kiện điển hình

if a[i] == a[j] + a[j - 1]:

Nếu tồn tại ít nhất một j thỏa mãn thì:

  • a[i] là phần tử điển hình

  • Tăng biến đếm

  • Dừng vòng lặp j (không cần xét thêm)

dem += 1
break

🔹 Bước 6: In kết quả

print(dem)

In ra số lượng phần tử điển hình tìm được.


3️⃣ Độ phức tạp thuật toán

⏱️ Thời gian chạy

  • Vòng ngoài: chạy n lần

  • Vòng trong: tối đa R − L + 1 lần

👉 Trường hợp xấu nhất:

O(n×(R−L))\boxed{O(n \times (R – L))}

Nếu R − L gần n:

O(n2)


💾 Bộ nhớ sử dụng

  • Mảng a kích thước n

  • Một vài biến đơn giản

👉 Độ phức tạp bộ nhớ:

O(n)


4️⃣ Nhận xét theo chuẩn bài thi

✔️ Ưu điểm:

  • Code rõ ràng, dễ hiểu

  • Xử lý đúng yêu cầu đề bài

  • break giúp giảm thời gian chạy khi đã thỏa điều kiện

⚠️ Nhược điểm:

  • Với n lớn và R − L lớn → chương trình có thể chậm

  • Chưa tối ưu cho dữ liệu rất lớn

👉 Tuy nhiên, rất phù hợp với đề HSG THCS nếu không yêu cầu tối ưu cao.


5️⃣ Gợi ý nâng cao (không bắt buộc)

  • Có thể tối ưu bằng bảng băm (dict) để tra nhanh tổng a[j] + a[j-1]

  • Hoặc tiền xử lý các cặp tổng liên tiếp

ĐÁP ÁN CÂU 4: Đặt Lại Mật Khẩu

📌 Ví dụ trong đề

Input

2 4
abac
zbab

Một output hợp lệ

abab

✔ So với abac → khác 1 vị trí
✔ So với zbab → khác 1 vị trí


🎯 Ghi nhớ để đi thi

  • Đây là bài sinh – kiểm tra, không phải DP

  • Mẹo quan trọng: neo theo 1 xâu

  • Rất hay ra trong đề HSG / chuyên Tin

import sys
sys.stdin = open("PW.INP", "r")
sys.stdout = open("PW.OUT", "w")

# Đọc n và m
n, m = map(int, sys.stdin.readline().split())

# Đọc các xâu
S = [sys.stdin.readline().strip() for _ in range(n)]

# Xâu gốc
base = S[0]

# Hàm kiểm tra xâu P có hợp lệ không
def hop_le(P):
    for s in S:
        dem = 0
        for i in range(m):
            if s[i] != P[i]:
                dem += 1
                if dem > 1:
                    return False
    return True

# Thử xâu base trước
if hop_le(base):
    print(base)
    sys.exit()

# Thử thay đổi từng vị trí
for i in range(m):
    for c in range(ord('a'), ord('z') + 1):
        if chr(c) != base[i]:
            P = base[:i] + chr(c) + base[i+1:]
            if hop_le(P):
                print(P)
                sys.exit()

# Không có lời giải
print(-1)

🔍 Phân tích đề bài (hiểu cho đúng)

  • n xâu S1, S2, …, Sn

  • Mỗi xâu độ dài m (m ≤ 10)

  • Cần tìm xâu P độ dài m sao cho:

👉 Với mỗi xâu Si, số vị trí khác nhau giữa Si và P KHÔNG QUÁ 1
Tức là:

  • P giống hoàn toàn Si (0 vị trí khác) ✅

  • hoặc chỉ khác đúng 1 vị trí

  • nếu khác ≥ 2 vị trí ❌ (không hợp lệ)

📌 Nếu có nhiều xâu P thỏa → in bất kỳ
📌 Nếu không có → in -1


🧠 Ý tưởng giải (rất quan trọng)

Nhận xét mấu chốt

  • m rất nhỏ (≤ 10)

  • Ký tự chỉ từ 'a' đến 'z'

➡️ Ta thử sinh xâu P từ một xâu gốc (ví dụ S1) bằng cách:

  • Giữ nguyên S1

  • Hoặc đổi 1 vị trí của S1 sang chữ khác (a..z)

💡 Lý do:

  • Nếu tồn tại P hợp lệ, thì P phải giống ít nhất một xâu cho trước ở hầu hết vị trí

  • Thử từ S1 là đủ (kỹ thuật “neo” – rất hay ra thi)


🧪 Cách kiểm tra một xâu P có hợp lệ không

Với mỗi xâu Si:

  • Đếm số vị trí j sao cho Si[j] != P[j]

  • Nếu > 1 → P không hợp lệ

  • Nếu tất cả đều ≤ 1 → chấp nhận


🧩 Thuật toán

  1. Đọc n, m và danh sách xâu

  2. Lấy xâu gốc S0

  3. Tạo danh sách ứng viên P:

    • Chính S0

    • Với mỗi vị trí i:

      • Thử thay S0[i] bằng mọi chữ 'a'..'z'

  4. Với mỗi P:

    • Kiểm tra với tất cả Si

    • Nếu hợp lệ → in P và kết thúc

  5. Nếu hết mà không có → in -1


⏱ Độ phức tạp

  • Số ứng viên ≤ 1 + 26 * m ≈ 261

  • Mỗi ứng viên kiểm tra n * m

➡️ O(26 · m · n · m)
Với m ≤ 10 → chạy rất nhanh, an toàn thi tỉnh 👍

ĐÁP ÁN CÂU 5: Sự Lây Lan Covid-19

 

import sys

sys.stdin = open("COVID.INP", "r")
sys.stdout = open("COVID.OUT", "w")

# Doc du lieu
n = int(sys.stdin.readline().strip())
a = list(map(int, sys.stdin.readline().split()))

# Sap xep cac vi tri theo thu tu tang dan
a.sort()

# Tinh khoang cach giua cac vi tri va tim khoang cach nho nhat, lon nhat
min_dist = min(a[i + 1] - a[i] for i in range(n - 1))  # Khoang cach nho nhat giua hai nguoi
max_dist = a[-1] - a[0]  # Khoang cach xa nhat giua nguoi dau va nguoi cuoi

# So nhom nhiem benh toi thieu la 1, toi da la so nguoi vi tat ca deu cach xa nhau
print(min_dist // 2 + 1, max_dist // 2 + 1)

1️⃣ Ý tưởng thuật toán

Bài toán cho:

  • n: số người

  • Mảng a[]: vị trí của từng người trên một trục thẳng

Giả sử virus lây lan theo khoảng cách, mỗi người nhiễm có thể lây trong một phạm vi nhất định.
Ta cần xác định:

  • Số nhóm nhiễm tối thiểu

  • Số nhóm nhiễm tối đa

Dựa trên khoảng cách giữa các vị trí của những người.


2️⃣ Phân tích từng bước chương trình

🔹 Bước 1: Đọc dữ liệu

n = int(sys.stdin.readline().strip())
a = list(map(int, sys.stdin.readline().split()))
  • n: số người

  • a: danh sách vị trí của các người


🔹 Bước 2: Sắp xếp các vị trí

a.sort()
  • Đưa các vị trí về thứ tự tăng dần

  • Giúp việc tính khoảng cách giữa những người liền kề trở nên đơn giản


🔹 Bước 3: Tính khoảng cách nhỏ nhất và lớn nhất

min_dist = min(a[i + 1] - a[i] for i in range(n - 1))
  • Tính khoảng cách nhỏ nhất giữa hai người đứng gần nhau nhất

  • Đây là tình huống lây lan mạnh nhất → số nhóm ít nhất

max_dist = a[-1] - a[0]
  • Khoảng cách giữa người đứng đầu và người đứng cuối

  • Đây là tình huống lây lan yếu nhất → số nhóm nhiều nhất


🔹 Bước 4: Tính số nhóm nhiễm bệnh

print(min_dist // 2 + 1, max_dist // 2 + 1)

Giải thích công thức:

  • Mỗi nhóm lây lan chiếm bán kính 1 đơn vị về mỗi phía

  • Hai người cách nhau d sẽ tạo khoảng trống lây nhiễm là d // 2

  • Cộng thêm 1 là nhóm ban đầu

👉 In ra:

  • Số nhóm nhiễm tối thiểu

  • Số nhóm nhiễm tối đa


3️⃣ Độ phức tạp thuật toán

⏱️ Thời gian chạy

  • Sắp xếp mảng a:

O(nlog⁡n)O(n \log n)

  • Duyệt tính min_dist:

O(n)O(n)

👉 Tổng thời gian chạy:

O(nlog⁡n)\boxed{O(n \log n)}


💾 Bộ nhớ sử dụng

  • Lưu mảng a gồm n phần tử

  • Một vài biến đơn giản

👉 Độ phức tạp bộ nhớ:

O(n)\boxed{O(n)}


4️⃣ Nhận xét theo chuẩn bài thi

✔️ Ưu điểm:

  • Thuật toán đơn giản, hiệu quả

  • Không dùng vòng lặp lồng nhau

  • Chạy nhanh với n lớn

  • Rất phù hợp đề HSG THCS

✔️ Ý tưởng cốt lõi:

  • Chuyển bài toán lây lan → bài toán khoảng cách trên trục số

  • Chỉ cần xét khoảng cách nhỏ nhất và lớn nhất


5️⃣ Đánh giá tổng quát

Tiêu chíNhận xét
Độ đúng✅ Chính xác
Tốc độ⚡ Nhanh
Bộ nhớ💾 Thấp
Phù hợp thi🏆 Rất tốt

 

 

❓ CÂU HỎI THƯỜNG GẶP – 73 ĐỀ THI HSG TIN HỌC PYTHON THCS TIỀN GIANG


1. Bộ 73 đề thi HSG Tin học Python THCS cấp tỉnh Tiền Giang phù hợp cho lớp mấy?

Bộ 73 đề thi HSG Tin học Python THCS cấp tỉnh Tiền Giang phù hợp cho học sinh lớp 6, 7, 8 và 9, đặc biệt là học sinh đang ôn thi học sinh giỏi Tin học cấp huyện, cấp tỉnh và học sinh luyện thi vào lớp 10 chuyên Tin.


2. Các đề thi có đúng chuẩn cấu trúc đề thi tỉnh Tiền Giang không?

Có. Toàn bộ đề được chọn lọc và biên soạn dựa trên cấu trúc đề thi thực tế của Sở GD&ĐT Tiền Giang, đảm bảo sát đề thi thật, giúp học sinh không bị bỡ ngỡ khi đi thi.


3. Bộ đề có kèm đáp án và code Python chi tiết không?

Có đầy đủ. Mỗi đề đều có:

  • Đáp án chính xác

  • Code Python hoàn chỉnh

  • Giải thích tư duy thuật toán

  • Cách đọc – ghi file đúng chuẩn đề thi HSG Tin học THCS


4. Code Python trong bộ đề có phù hợp với bài thi chính thức không?

Hoàn toàn phù hợp. Code được viết theo chuẩn thi Tin học THCS, sử dụng:

  • import sys

  • Đọc dữ liệu từ file .INP

  • Ghi kết quả ra file .OUT
    Đúng với cách chấm bài trong các kỳ thi HSG cấp tỉnh.


5. Bộ đề này có phù hợp cho người mới học Python không?

Phù hợp nếu bạn đã nắm kiến thức Python cơ bản (biến, vòng lặp, điều kiện). Bộ đề được sắp xếp từ dễ → trung bình → nâng cao, giúp học sinh nâng trình từng bước, không bị quá tải.


6. Nội dung trong 73 đề thi gồm những dạng bài nào?

Bộ đề bao gồm:

  • Bài toán xử lý số, số nguyên tố

  • Mảng – danh sách – ma trận

  • Chuỗi ký tự

  • Bài toán tư duy thuật toán

  • Các dạng bài phân loại học sinh giỏi thường ra trong đề tỉnh


7. Giáo viên có thể dùng bộ đề này để bồi dưỡng học sinh không?

Rất phù hợp. Bộ đề là tài liệu chuẩn – đầy đủ – có lời giải chi tiết, giúp giáo viên:

  • Soạn bài bồi dưỡng HSG Tin học

  • Ra đề luyện tập

  • Hướng dẫn học sinh tư duy thuật toán đúng hướng

 

8. Luyện trọn bộ 73 đề này mang lại lợi ích gì?

Luyện đủ bộ đề giúp học sinh:

  • Nắm chắc dạng đề HSG Tin học Python THCS

  • Cải thiện tốc độ và độ chính xác khi làm bài

  • Hiểu rõ bản chất thuật toán

  • Tăng cơ hội đạt giải cấp huyện – cấp tỉnh


9. Bộ đề có cập nhật mới không?

Có. Bộ đề được chọn lọc và cập nhật, phù hợp với xu hướng ra đề mới, đúng yêu cầu Python trong chương trình THCS hiện nay.


10. Nên luyện bộ đề này như thế nào để đạt hiệu quả cao nhất?

Cách học hiệu quả nhất:
1️⃣ Làm đề không xem đáp án trước
2️⃣ Tự code và chạy thử
3️⃣ So sánh với code mẫu & cách tối ưu
4️⃣ Ghi chú lại dạng bài hay sai
5️⃣ Luyện lại sau 1–2 tuần

 

74 Đề thi học sinh giỏi Tin học THCS cấp Tỉnh Có ĐÁP ÁN 2026-2027

Tổng Hợp 74 Đề Thi Học Sinh Giỏi Tin Học THCS Cấp Tỉnh Có Đáp Án (Năm Học 2026-2027)

Kỳ thi chọn học sinh giỏi Tin học cấp THCS (đặc biệt là lớp 9) luôn là một thử thách lớn đòi hỏi sự chuẩn bị kỹ lưỡng về tư duy thuật toán và kỹ năng lập trình. Để đồng hành cùng các thầy cô giáo và các em học sinh, Vi Tính Tấn Dân xin chia sẻ bộ tài liệu “74 Đề thi học sinh giỏi Tin học THCS cấp tỉnh có đáp án” được cập nhật mới nhất cho năm học 2026-2027.

Đây là nguồn tài liệu quý giá giúp các em làm quen với cấu trúc đề thi, rèn luyện kỹ năng giải thuật trên các ngôn ngữ phổ biến như C++, Python và Pascal.

Các đề ôn thi để chuẩn bị thi Cấp Xã thì các em vào đường dẫn phía dưới để tham khảo giúp thầy nhé!

    1. Giải đề 1 và đáp án thi Học sinh giỏi tin học Python C++ THCS có tài liệu ôn thi
    2. Giải đề 2 và đáp án thi Học sinh giỏi tin học Python C++ THCS có tài liệu ôn thi
    3. Giải đề 3 thi học sinh giỏi tin học lập trình Python có đáp án
    4. Giải đề 4 ôn thi học sinh giỏi Tin Học THCS lập trình Python có đáp án
    5. Giải đề 5 và đáp án thi HSG Tin Python có số Pell.
    6. Giải đề 6 và đáp án bồi dưỡng học sinh giỏi tin 10 có số Armstrong
    7. Giải đề 7 và đáp án  thi học sinh giỏi tin học 10 Python có số Collatz
    8. Giải đề 8 trong 20 đề Bồi dưỡng học sinh giỏi Tin học lớp 9 có số Kaprekar.
    9. Giải đề 9 thi HSG Tin học lớp 8 lập trình Python có số Happy
    10. Giải đề 10 thi tin học trẻ THPT có bài  In các xâu con trong xâu s.
    11. Đề thi hsg tin 11 python có đáp án hay nhất 2024
    12. 12 đề và đáp án thi HSG tin Python có sắp xếp
    13. Đề 13 thi học sinh giỏi Tin học THCS có đáp án hay nhất năm 2024.
    14. 14 đề bồi dưỡng học sinh giỏi tin học lớp 7, 8, 9 THCS mới nhất !
    15. 15 Đề thi học sinh giỏi Tin học lớp 9 cấp huyện hay nhất 2024 – 2025
    16. 16 Đề bài tập Python có lời giải PDF thi HSG cấp huyện mới nhất
    17. 17 đề thi tin học trẻ có Đáp Án python THCS cấp huyện PDF
    18. 18 Đề thi học sinh giỏi Tin học THCS có đáp ÁN dễ học nhất năm 2025
    19. 19 thi HSG Tin 9 C ++ hoặc Python có đáp án
    20. 100 đề và đáp án thi HSG tin Python cấp huyện 2025

1. Tại sao bạn nên tải bộ 74 đề thi HSG Tin học này?

Khác với các tài liệu trôi nổi trên mạng, bộ sưu tập 74 đề thi này được Vi Tính Tấn Dân tổng hợp và chọn lọc kỹ càng từ các kỳ thi chính thức của nhiều tỉnh thành trên cả nước trong những năm gần đây.

  • Số lượng lớn: Với 74 đề thi, học sinh có thể thoả sức luyện tập từ cơ bản đến nâng cao.

  • Có đáp án chi tiết: Tất cả các đề đều đi kèm Test case (Input/Output) chuẩn và Code mẫu (Solution) giúp học sinh dễ dàng đối chiếu kết quả.

  • Cập nhật xu hướng mới: Đề thi bám sát cấu trúc ra đề của Bộ GD&ĐT và các Sở GD&ĐT trong giai đoạn 2025-2027, tập trung mạnh vào tư duy thuật toán thay vì chỉ cú pháp ngôn ngữ.

2. Cấu trúc đề thi học sinh giỏi Tin học THCS năm 2026-2027 có gì mới?

Theo xu hướng chuyển đổi số và đổi mới giáo dục, đề thi HSG Tin học cấp tỉnh hiện nay thường có cấu trúc như sau:

  • Thời gian làm bài: 150 phút.

  • Hình thức: Thi lập trình trên máy tính (chấm tự động bằng các phần mềm như Themis, CMS…).

  • Ngôn ngữ lập trình: Cho phép sử dụng C++ (phổ biến nhất), Python (xu hướng mới) và Free Pascal.

Các dạng bài tập thường gặp:

  1. Bài toán số học: Tìm số nguyên tố, ước số, số hoàn hảo, xử lý số lớn…

  2. Xử lý mảng và chuỗi: Sắp xếp, tìm kiếm, thao tác trên xâu ký tự.

  3. Thuật toán & Quy hoạch động: Các bài toán tối ưu, bài toán cái túi, dãy con tăng dài nhất…

  4. Hình học & Tổ hợp: Tính diện tích, đếm số phương án…

3. Review nội dung bộ đề thi

Dưới đây là tóm tắt nội dung của một số đề thi tiêu biểu có trong bộ tài liệu này:

Đề số 01: Đề thi HSG Tin học Tỉnh Tiền Giang (Năm 2021- 2022)

  • Bài 1 (4 điểm): Tìm số nguyên tố đầy đủ?

  • Bài 2 (4 điểm): Tìm Mật Mã (Mảng 1 chiều + Thuật toán đếm)?

  • Bài 3 (4 điểm): Bài toán Ma Trận?

  • Bài 4 (4 điểm): Về hình học Tính Tam Giác?

  • Bài 5 (4 điểm): Tính Lãi Kép Ngân Hàng?

(Tất cả đều có code giải tham khảo bằng C++ và Python)

4. Hướng dẫn ôn thi hiệu quả với bộ tài liệu này

Để đạt kết quả cao nhất trong kỳ thi cấp tỉnh, các em học sinh nên tuân thủ lộ trình sau:

  1. Giai đoạn 1: Tải bộ đề về và phân loại theo độ khó.

  2. Giai đoạn 2: Tự bấm giờ làm bài giống như thi thật (không xem đáp án trước).

  3. Giai đoạn 3: So sánh kết quả với bộ Test case.

  4. Giai đoạn 4: Tham khảo Code mẫu để học hỏi cách viết code tối ưu, ngắn gọn và “sạch” hơn.

5. Tải xuống 74 Đề thi học sinh giỏi Tin học THCS cấp tỉnh (Full Code)

Các thầy cô và các em học sinh có thể tải trọn bộ tài liệu tại liên kết bên dưới. File nén bao gồm: File đề bài (PDF/Word), Bộ Test (Input/Output), và Code giải (CPP/PY/PAS).

Tải đề Thi Đề thi HSG Tin học THCS Python Cấp Tỉnh file PDF:

Tải bằng google driver


Lời kết

Hy vọng bộ tài liệu 74 đề thi học sinh giỏi Tin học THCS cấp tỉnh có đáp án 2026-2027 này sẽ là hành trang vững chắc giúp các em học sinh tự tin bước vào phòng thi và gặt hái giải cao.

Đừng quên ghé thăm Vi Tính Tấn Dân thường xuyên để cập nhật thêm nhiều tài liệu công nghệ, thủ thuật máy tính và đề thi mới nhất nhé!

Đáp Án Bài 1: Số Nguyên Tố Đầy Đủ

import sys
import math

# MỞ FILE VÀO / RA (đúng chuẩn thi)
sys.stdin = open("FULLPRIM.INP", "r")
sys.stdout = open("FULLPRIM.OUT", "w")


# Hàm kiểm tra số nguyên tố
def la_so_nguyen_to(so):
    if so < 2:
        return False
    if so == 2:
        return True
    if so % 2 == 0:
        return False

    can_bac_hai = int(math.sqrt(so))
    for uoc in range(3, can_bac_hai + 1, 2):
        if so % uoc == 0:
            return False
    return True


# ===== CHƯƠNG TRÌNH CHÍNH =====

# Nhập số lượng phần tử
so_luong = int(input())

# Nhập dãy số
day_so = list(map(int, input().split()))

ket_qua = []

# Duyệt từng số trong dãy
for so in day_so:
    if la_so_nguyen_to(so):
        so_dao = int(str(so)[::-1])
        if la_so_nguyen_to(so_dao):
            ket_qua.append(str(so))

# Xuất kết quả
if len(ket_qua) == 0:
    print(0)
else:
    print(" ".join(ket_qua))

🧠 Giải thích ngắn gọn cách làm

  1. Viết hàm la_so_nguyen_to() để kiểm tra số nguyên tố

  2. Với mỗi số trong dãy:

    • Kiểm tra số đó có nguyên tố không

    • Đảo ngược số

    • Kiểm tra số đảo có nguyên tố không

  3. Nếu cả hai đều nguyên tố → là số nguyên tố đẩy đủ

  4. In ra danh sách kết quả, nếu không có in 0


⏱️ Độ phức tạp

  • Kiểm tra 1 số nguyên tố: O(√n)

  • Tổng:

O(N × √max)
  • Bộ nhớ: O(1)

 

Đáp Án Bài 2: Mật Mã:

 

 

# SECRCODE.py
import sys
sys.stdin = open("SECRCODE.INP", "r")
sys.stdout = open("SECRCODE.OUT", "w")

xau = sys.stdin.read().strip()

# Mảng đếm số lần xuất hiện của các chữ cái a -> z
dem = [0] * 26

# Đếm ký tự
for ky_tu in xau:
    vi_tri = ord(ky_tu) - ord('a')
    dem[vi_tri] += 1
# Tạo mã bản quyền
ket_qua = ""
for i in range(26):
    if dem[i] > 0:
        ket_qua += str(dem[i])
print(ket_qua)

🔹 Phân tích bài toán

  • Đề bài cho một xâu ký tự thường a–z

  • Cần:

    1. Đếm số lần xuất hiện của từng chữ cái

    2. Theo thứ tự alphabet a → z

    3. Nếu chữ cái xuất hiện (đếm > 0) thì ghi số lần xuất hiện vào mã

  • Các số được nối liền nhau, không có dấu cách


🔹 Ví dụ phân tích

Xâu:

bcddaagfxybbbccccdeeezyyzzz
Ký tựSố lần
a2
b4
c6
d3
e5
f1
x3
y3
z4

👉 Mã bản quyền: 246351334


🔹 Ý tưởng giải

  • Dùng mảng đếm 26 phần tử, mỗi phần tử tương ứng một chữ cái

  • Duyệt xâu:

    • Mỗi ký tự → tăng biến đếm tương ứng

  • Duyệt mảng từ a đến z:

    • Nếu số đếm > 0 → nối vào kết quả


🔹 Độ phức tạp

  • Thời gian: O(n) (n là độ dài xâu)

  • Bộ nhớ: O(1) (chỉ dùng mảng 26 phần tử)

 

Đáp án bài 3: Chọn Phần Thưởng

 

# BONUSSEL.py
import sys
import math

sys.stdin = open("BONUSSEL.INP", "r")
sys.stdout = open("BONUSSEL.OUT", "w")

m, n = map(int, sys.stdin.readline().split())

tong = 0

for _ in range(m):
    dong = list(map(int, sys.stdin.readline().split()))
    for gia_tri in dong:
        can = int(math.isqrt(gia_tri))
        if can * can == gia_tri:
            tong += gia_tri

print(tong)

🔹 Phân tích bài toán

  • Cho bảng số nguyên dương kích thước m × n

  • Yêu cầu:

    • Tìm tất cả các số chính phương

    • Tính tổng các số đó


🔹 Số chính phương là gì?

Một số x là số chính phương nếu:

x = k² (k là số tự nhiên)

👉 Cách kiểm tra nhanh:

k = int(sqrt(x))
nếu k * k == xx là số chính phương

🔹 Ý tưởng giải

  • Đọc m, n

  • Duyệt từng phần tử trong bảng

  • Với mỗi số:

    • Tính căn bậc hai nguyên

    • Nếu bình phương lại bằng chính nó → cộng vào tổng


🔹 Độ phức tạp

  • Thời gian: O(m × n)

  • Bộ nhớ: O(1)

✅ Ghi nhớ khi đi thi

✔ Dùng math.isqrt() chính xác – nhanh – an toàn
✔ Biến đặt rõ nghĩa
✔ Không in thừa dòng, thừa khoảng trắng

Đáp án bài 4: Tam Giác

# TRIANGLE.py
import sys
sys.stdin = open("TRIANGLE.INP", "r")
sys.stdout = open("TRIANGLE.OUT", "w")

def binh_phuong_khoang_cach(x1, y1, x2, y2):
    return (x2 - x1) ** 2 + (y2 - y1) ** 2

T = int(sys.stdin.readline())

for _ in range(T):
    xa, ya, xb, yb, xc, yc = map(float, sys.stdin.readline().split())

    # Kiểm tra 3 điểm có thẳng hàng không
    dien_tich = (xb - xa) * (yc - ya) - (xc - xa) * (yb - ya)
    if dien_tich == 0:
        print("NO")
        continue

    # Tính bình phương độ dài các cạnh
    AB2 = binh_phuong_khoang_cach(xa, ya, xb, yb)
    BC2 = binh_phuong_khoang_cach(xb, yb, xc, yc)
    CA2 = binh_phuong_khoang_cach(xc, yc, xa, ya)

    # Kiểm tra định lý Pitago
    if (abs(AB2 + BC2 - CA2) < 1e-9 or
        abs(AB2 + CA2 - BC2) < 1e-9 or
        abs(BC2 + CA2 - AB2) < 1e-9):
        print("YES")
    else:
        print("NO")

🔹 Phân tích đề bài

Cho T bộ dữ liệu, mỗi bộ gồm tọa độ 3 điểm A, B, C trong mặt phẳng OXY.

Yêu cầu:
👉 Kiểm tra 3 điểm có tạo thành TAM GIÁC VUÔNG hay không

In:

  • "YES" nếu là tam giác vuông

  • "NO" nếu không phải


🔹 Điều kiện toán học

1️⃣ Ba điểm tạo thành tam giác

Ba điểm không thẳng hàng
Diện tích tam giác ≠ 0

👉 Kiểm tra bằng tích có hướng:

(xB - xA)(yC - yA) - (xC - xA)(yB - yA) ≠ 0

2️⃣ Tam giác vuông (định lý Pitago)

  • Gọi:
  • AB², BC², CA² là bình phương độ dài các cạnh

  • Tam giác vuông nếu:
  • AB² + AC² = BC²
    hoặc
    AB² + BC² = AC²
    hoặc
    AC² + BC² = AB²
  • ⚠️ KHÔNG lấy căn để tránh sai số số thực (đề đã nhắc)

🔹 Công thức bình phương khoảng cách

Với A(x₁, y₁), B(x₂, y₂):

AB² = (x₂ - x₁)² + (y₂ - y₁)²

🔹 Ý tưởng giải

Với mỗi bộ test:

  1. Đọc tọa độ A, B, C

  2. Kiểm tra có tạo thành tam giác

  3. Tính AB², BC², CA²

  4. Kiểm tra định lý Pitago

  5. In kết quả


🔹 Độ phức tạp

  • Mỗi test: O(1)

  • Tổng: O(T)
    → Chạy rất nhanh

 

✅ Giải thích điểm quan trọng (rất hay bị sai)

  • ⚠️ KHÔNG dùng sqrt()
    ⚠️ So sánh số thực phải dùng sai số nhỏ (1e-9)
    ⚠️ Phải kiểm tra tạo thành tam giác trước

📌 Mẹo ăn điểm khi thi

  • ✔ Dùng bình phương độ dài
    ✔ So sánh bằng abs(a-b) < 1e-9
    ✔ In đúng "YES" / "NO" (IN HOA)

1. Bản chất của đoạn code

Đoạn code này dùng để kiểm tra xem một tam giác có phải là tam giác vuông hay không dựa trên Định lý Pitago đảo.

  • Định lý: Nếu tổng bình phương hai cạnh bằng bình phương cạnh còn lại ($a^2 + b^2 = c^2$) thì đó là tam giác vuông.

  • Vì chúng ta không biết cạnh nào là cạnh huyền, nên phải kiểm tra cả 3 trường hợp:

    1. AB^2 + BC^2 = CA^2 (Vuông tại B)

    2. AB^2 + CA^2 = BC^2 (Vuông tại A)

    3. BC^2 + CA^2 = AB^2 (Vuông tại C)


2. Tại sao phải dùng abs(...) < 1e-9 mà không dùng dấu ==?

Đây là kiến thức “sống còn” cho học sinh khi thi HSG Tin học.

  • Vấn đề sai số: Trong máy tính, các số thực (kiểu float) được lưu dưới dạng nhị phân nên thường xảy ra sai số nhỏ.

    • Ví dụ: Kết quả lẽ ra là 25.0 nhưng máy tính có thể lưu là 24.99999999999999.

    • Nếu ta dùng if AB2 + BC2 == CA2:, máy sẽ trả về False (Sai), dẫn đến mất điểm oan.

  • Giải pháp: Thay vì so sánh bằng nhau tuyệt đối, ta kiểm tra xem hiệu của hai vế có đủ nhỏ hay không.

    • abs(AB2 + BC2 - CA2) là trị tuyệt đối của hiệu hai vế.

    • 1e-9 (tức là 10^{-9} hay 0.000000001) được gọi là sai số cho phép (epsilon).

Kết luận: Nếu hiệu của hai vế nhỏ hơn 10^{-9}, ta coi như chúng bằng nhau.


3. Cách giải thích cho học sinh (Ngôn ngữ của Thầy Dân)

Thầy có thể dạy các em như thế này:

  1. Bước 1: Tính bình phương độ dài 3 cạnh (gọi là AB2, BC2, CA2).

  2. Bước 2: Áp dụng Pitago đảo. Nhưng nhớ là trong lập trình, “bằng nhau” với số thực rất mong manh.

  3. Bước 3: Sử dụng “khoảng cách an toàn”. Nếu hai vế chỉ lệch nhau một tí xíu không đáng kể (< 1e-9) thì máy tính chấp nhận đó là tam giác vuông.


4. Code viết lại cho chuyên nghiệp

Các em có thể đưa đoạn này vào chuyên đề Hình học:

# Giả sử đã tính xong bình phương các cạnh AB2, BC2, CA2
sai_so = 1e-9 # Epsilon

# Kiểm tra từng trường hợp vuông tại A, B, hoặc C
vuong_tai_B = abs(AB2 + BC2 - CA2) < sai_so
vuong_tai_A = abs(AB2 + CA2 - BC2) < sai_so
vuong_tai_C = abs(BC2 + CA2 - AB2) < sai_so

if vuong_tai_A or vuong_tai_B or vuong_tai_C:
    print("YES") # Là tam giác vuông
else:
    print("NO")

Đáp án bài 5: Lãi Kép Ngân Hàng:

# COMPINT.py
import sys
sys.stdin = open("COMPINT.INP", "r")
sys.stdout = open("COMPINT.OUT", "w")

T = int(sys.stdin.readline())

for _ in range(T):
    M, r, n = map(float, sys.stdin.readline().split())
    n = int(n)

    tong_tien = M

    # Tính lãi kép qua từng tháng
    for _ in range(n):
        tong_tien = tong_tien + tong_tien * r / 100

    # In kết quả với 1 chữ số thập phân
    print(f"{tong_tien:.1f}")

🔹 Phân tích đề bài

  • T khoản gửi tiết kiệm

  • Mỗi khoản gồm:

    • M: tiền vốn ban đầu

    • r: lãi suất % mỗi tháng

    • n: số tháng gửi

  • Hình thức: LÃI KÉP

    • Tiền lãi của tháng trước được cộng vào vốn để tính lãi cho tháng sau

👉 Yêu cầu:
Tính tổng số tiền nhận được sau n tháng, in ra 1 chữ số thập phân


🔹 Công thức lãi kép theo tháng

Sau mỗi tháng:

T = T + T * r / 100

Tương đương:

T = T * (1 + r/100)

Lặp lại n lần


🔹 Ví dụ phân tích (đề bài)

Gửi:

M = 1 000 000
r = 0.7 (%)
n = 3
  • Tháng 1:
    T1 = 1000000 * 1.007 = 1007000

  • Tháng 2:
    T2 = 1007000 * 1.007 = 1014049

  • Tháng 3:
    T3 = 1014049 * 1.007 = 1021147.3


🔹 Ý tưởng giải

  • Đọc số bộ test T

  • Với mỗi bộ:

    • Gán tong_tien = M

    • Lặp n tháng:

      • tong_tien *= (1 + r/100)

  • In kết quả định dạng 1 chữ số thập phân


🔹 Độ phức tạp

  • Mỗi test: O(n) (n ≤ 500)

  • Tổng: O(T × n) → chạy rất nhanh


⚠️ Lưu ý quan trọng khi thi

Dùng số thực (float)
Không làm tròn sớm
✔ Chỉ làm tròn khi in kết quả
✔ In đúng 1 chữ số thập phân

🧠 Vì sao KHÔNG dùng công thức mũ?

Có thể dùng:

T = M * (1 + r/100)^n

❌ Nhưng dễ sai số số thực
✅ Vòng lặp an toàn hơn – đúng tinh thần đề THCS


📌 Tóm tắt nhanh

Nội dungGhi nhớ
Loại lãiLãi kép
Công thứcNhân dồn từng tháng
Output1 chữ số thập phân
Sai lầm hay gặpLàm tròn sớm

 

 

Tổng hợp 75 Đề thi HSG Tin học THCS Python Cấp Tỉnh (Có Code Giải Chi Tiết)

Tổng hợp 75 Đề thi HSG Tin học THCS Python Cấp Tỉnh (Có Code Giải Chi Tiết – Độ phức tạp) cập nhật mới nhất năm 2026 – 2027

Tải đề Thi Đề thi HSG Tin học THCS Python Cấp Tỉnh file PDF:

Tải bằng google driver

Các đề ôn thi để chuẩn bị thi Cấp Xã thì các em vào đường dẫn phía dưới để tham khảo giúp thầy nhé!

    1. Giải đề 1 và đáp án thi Học sinh giỏi tin học Python C++ THCS có tài liệu ôn thi
    2. Giải đề 2 và đáp án thi Học sinh giỏi tin học Python C++ THCS có tài liệu ôn thi
    3. Giải đề 3 thi học sinh giỏi tin học lập trình Python có đáp án
    4. Giải đề 4 ôn thi học sinh giỏi Tin Học THCS lập trình Python có đáp án
    5. Giải đề 5 và đáp án thi HSG Tin Python có số Pell.
    6. Giải đề 6 và đáp án bồi dưỡng học sinh giỏi tin 10 có số Armstrong
    7. Giải đề 7 và đáp án  thi học sinh giỏi tin học 10 Python có số Collatz
    8. Giải đề 8 trong 20 đề Bồi dưỡng học sinh giỏi Tin học lớp 9 có số Kaprekar.
    9. Giải đề 9 thi HSG Tin học lớp 8 lập trình Python có số Happy
    10. Giải đề 10 thi tin học trẻ THPT có bài  In các xâu con trong xâu s.
    11. Đề thi hsg tin 11 python có đáp án hay nhất 2024
    12. 12 đề và đáp án thi HSG tin Python có sắp xếp
    13. Đề 13 thi học sinh giỏi Tin học THCS có đáp án hay nhất năm 2024.
    14. 14 đề bồi dưỡng học sinh giỏi tin học lớp 7, 8, 9 THCS mới nhất !
    15. 15 Đề thi học sinh giỏi Tin học lớp 9 cấp huyện hay nhất 2024 – 2025
    16. 16 Đề bài tập Python có lời giải PDF thi HSG cấp huyện mới nhất
    17. 17 đề thi tin học trẻ có Đáp Án python THCS cấp huyện PDF
    18. 18 Đề thi học sinh giỏi Tin học THCS có đáp ÁN dễ học nhất năm 2025
    19. 19 thi HSG Tin 9 C ++ hoặc Python có đáp án
    20. 100 đề và đáp án thi HSG tin Python cấp huyện 2025

Thiết kế dạng hình:

75 Đề thi HSG Tin học THCS Python cấp Tỉnh có Đáp Án 2026-2027

Xoá term: 100 đề và đáp an thi HSG Tin Python 100 đề và đáp an thi HSG Tin Python De thi học sinh giỏi Tin học THCS có đáp AN Tài liệu bồi dưỡng HSG Tin học THCS Python

Thiết kế dạng chữ :

KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH
TRUnG học Cơ Sở

Năm học 2022-2023 Môn: TIN HỌC

Thời gian: 150 phút (không kể thời gian giao đề) Ngày thi: 21/3/2023 ^

(Đề thi có 5 trang, gồm 5 bài)

TỔNG quan các BÀi thi

Thứ tự 

Tên bài

File chương trìnhFile dữ liệu vàoFile kết quả
Bài 1Tương đồngSAME.*SAME.INPSAME.OUT
Bài 2Tách xâuSTRING.*STRING.INPSTRING.OUT
Bài 3May mắnLUCKY.*LUCKY.INPLUCKY.OUT
Bài 4Tam giácTRIANGLE.*TRIANGLE.INPTRIANGLE.OUT
Bài 5Chở hàngGOOD.*GOOD.INPGOOD.OUT
Dấu * được thay thế bởi PAS, CPP, PY của ngôn ngữ lập trình được sử dụng tương ứng là Free Pascal, C++, Python hoặc phần mở rộng tương ứng với NNLT khác.

 

 

Bài 1: (4 điểm) Tương đồng   Tên chương trình: SAME.*

Vườn bưởi nhà Alice có n cây. Để theo dõi sự phát triển của các cây bưởi của mình, Alice thường xuyên đo và ghi lại chiều cao của chúng. Trong tuần này, Alice có được bảng chiều cao của các cây bưởi là một dãy số nguyên a[1], a[2],…, a[n], trong đó a[i] là chiều cao của cây bưởi thứ i. Nhìn vào dãy số, Alice biết có những cây có chiều cao trùng nhau và Alice gọi mỗi tần số trùng nhau là tần số “tương đồng”.

Do số lượng cây bưởi nhiều nên Alice muốn nhờ các bạn lập trình tìm tần số tương đồng lớn nhất của các cây bưởi là bao nhiêu?

Dữ liệu vào: Đọc từ file SAME. INP gồm 2 dòng:

  • Dòng 1: gồm một số nguyên dương n (0 < n <106).
  • Dòng 2: gồm n số nguyên dương a[i] (0 < ai <106), mỗi số ứng với chiều cao của một cây bưởi, giữa các số được cách nhau bởi một khoảng trắng.

Kết quả: Ghi ra file SAME.OUT gồm duy nhất một số nguyên dương là tần số tương đồng lớn nhất.

Ví dụ:

SAME.INPsame.out
7

9 8 6 8 5 6 10

2
2

3 10

1

 

 

Giải thích bộ test 1:

Có 1 chiều cao: 5;

Có 2 chiều cao: 6;

Có 2 chiều cao: 8;

Có 1 chiều cao: 9;

Có 1 chiều cao: 10

->Tần số tương đồng lớn nhất là: 2

Bài 2: (4 điểm) Tách xâu Tên chương trình: STRING.*

Hôm nay, mẹ và Cám đi dự dạ hội. Tấm cũng rất muốn được đi. Nhưng trước khi đi, mẹ Cám giao cho Tấm một công việc để làm khó Tấm như sau:

Cho một xâu s gồm các ký tự là các chữ cái in hoa hoặc in thường (trong bảng chữ cái Tiếng Anh) và các kí tự số. Mẹ kế yêu cầu Tấm hãy tách các ký tự trong xâu s thành hai phần như sau:

Phần 1: gồm các chữ cái có mặt trong s nhưng viết theo thứ tự ngược lại.

Phần 2: gồm các chữ số có mặt trong xâu s nhưng phải được sắp xếp theo thứ tự từ nhỏ đến lớn.

Nếu Tấm thực hiện xong công việc thì mới được đi dự tiệc. Nhưng Tấm có thời gian rất ít nên chưa giải được bài toán. Các bạn đội tuyển Tin học hãy giúp đỡ Tấm giải bài toán để Tấm còn được đi dự tiệc nhé!

Dữ liệu vào: Đọc từ file STRING.INP gồm 1 dòng chứa xâu s có độ dài không quá 103 ký tự. Dữ liệu vào đảm trong xâu s luôn có kí tự chữ cái và kí tự chữ số. Kết quả: Ghi ra fíle STRING.OUT gồm 2 dòng:

  • Dòng 1: gồm các chữ cái trong xâu s nhưng được viết theo thứ tự ngược lại.
  • Dòng 2: gồm các chữ số trong xâu s, nhưng phải được sắp xếp theo thứ tự từ nhỏ đến lớn.

Ví dụ:

STRING.INPSTRING.OUT
m2aC0ma2T3TamCam

0223

 

 

Bài 3: (4 điểm) May mắn Tên chương trình: LUCKY.*

Trong buổi tiệc liên hoan cuối năm của công ty cung cấp điện thoại Thế Giới Trẻ, ghế ngồi trong hội trường của khách mời được bố trí thành một ma trận hình chữ nhật gồm m hàng và n cột. Để buổi liên hoan thêm vui vẻ, ban tổ chức cho mỗi khách mời rút ngẫu nhiên một phiếu, trên phiếu có ghi một số nguyên dương trong phạm vi từ 1 đến 109.

Ban tổ chức sẽ trao cho những người may mắn mỗi người một phần quà là một chiếc điện thoại. Biết rằng người may mắn là người có số ghi trong phiếu của

mình lớn hơn trung bình cộng của số trong phiếu của những người ngồi xung quanh người đó.

Xung quanh một người được định nghĩa như sau:

Trường hợp 1: Người ngồi ở vị trí góc (trên trái, dưới trái, trên phải, dưới

phải) của hình chữ nhật thì chỉ có 2 người ngồi xung quanh.

Trường hợp 2: Người ngồi ở vị trí bìa (trừ góc) thì có 3 người xung quanh. Trường hợp 3: Người ngồi ở các vị trí còn lại có 4 người xung quanh.

 

 

Trường hợp 1                                                  Trường hợp 2                                                  Trường hợp 3

Ô gạch sọc chỉ vị trí xung quanh của vị trí được tô đen.

Bạn hãy giúp ban tổ chức xác định số lượng điện thoại cần phải chuẩn bị để trao cho những người may mắn.

Dữ liệu vào: Đọc từ file LUCKY.INP gồm:

  • Dòng 1: gồm hai số nguyên dương theo thứ tự m, n (0 < m, n <103), giữa m và n được cách nhau bởi dấu cách.
  • m dòng tiếp theo, mỗi dòng gồm n số nguyên dương có giá trị không quá 109, giữa hai số cách nhau bởi một dấu cách.

Kết quả: Ghi ra file LUCKY.OUT gồm một số nguyên là số điện thoại ban tổ chức cần chuẩn bị.

Ví dụ:

LUCKY.INPLUCKY.OUT
3 43
1 4 3 1
1 1 5 2
2 1 2 1

 

 

Giải thích:

Số lượng điện thoại cần chuẩn bị là 3, vì có ba người may mắn:

+ Người thứ nhất ngồi ở hàng 1, cột 2, có số phiếu là 4 (có 3 người xung quanh) + Người thứ hai ngồi ở hàng 2, cột 3, có số phiếu là 5 (có 4 người xung quanh) + Người thứ ba ngồi ở hàng 3, cột 1, có số phiếu là 2 (có 2 người xung quanh)

Bài 4: (4 điểm) Tam giác Tên chương trình: TRIANGLE.*

Alice có n que tính, mỗi que có độ dài là một số nguyên dương. Alice muốn tạo ra các tam giác bằng cách ghép ba que tính lại với nhau, độ dài mỗi cạnh là một que tính.

Em hãy giúp Alice đếm xem có bao nhiêu tam giác được tạo thành từ các que tính này và cho biết diện tích lớn nhất trong các diện tích của các tam giác ghép được là bao nhiêu?

Biết rằng:

+ Hai tam giác được gọi là khác nhau nếu có ít nhất một que tính khác nhau.

+ Ta có thể tính diện tích tam giác theo công thức sau :

s=Vp * (p — à) * (p — b) * (p — c)

Trong đó a,b,c là độ dài 3 cạnh của tam giác, và p là nửa chu vi của tam giác.

Dữ liệu vào: Đọc từ file TRIANGLE.INP gồm:

  • Dòng 1: gồm một số nguyên dương n (3 < n < 100)
  • Dòng 2: gồm n số nguyên dương a[1], a[2], …, a[n] là độ dài của n que tính (1 < a[i] < 106 1<i<n). Giữa các số được cách nhau bởi một khoảng trắng.

Kết quả: Ghi ra file TRIANGLE.OUT gồm:

  • Dòng 1: Ghi số lượng tam giác có thể ghép được.
  • Dòng 2: Ghi một số thực là diện tích lớn nhất của tam giác, kết quả làm tròn đến 2 chữ số ở phần thập phân. Trường hợp không có tam giác nào thì dòng này ghi -1.
TRIANGLE.INPTRIANGLE.OUTGiải thích
53Có 3 tam giác được tạo từ 5 que tính trên:
1 4 5 2 36.00Tam giác 1: Que thứ 2, 3, 4 Tam giác 2: Que thứ 2, 3, 5 Tam giác 3: Que thứ 2, 4, 5 Trong đó tam giác thứ 2 có 3 độ dài là 4 5 3 có có diện tích lớn nhất là 6.00
44Có 4 tam giác được tạo từ 4 que tính trên:
2 2 2 21.73Tam giác 1: Que thứ 1, 2, 3

Tam giác 2: Que thứ 1, 2, 4

Tam giác 3: Que thứ 1, 3, 4

Tam giác 4: Que thứ 2, 3, 4

Trong đó 4 tam giác đều có cùng diện

tích là: 1.73

30Không ghép được tam giác nào
1 2 3-1

 

 

Bài 5: (4 điểm) Hàng hóa Tên chương trình: GOOD.*

Cửa hàng tạp hóa XYZ cần chở n kiện hàng giao cho khách. Kiện hàng thứ i có trọng lượng là a[i] tấn. Cửa hàng có một xe tải có trọng tải là m tấn. Trong

chuyến hàng đầu tiên, cửa hàng muốn chở những kiện hàng đi giao thỏa mãn các yêu cầu sau:

  • Yêu cầu 1: Ưu tiên kiện hàng có trọng lượng lớn hơn sẽ được chở đi.
  • Yêu cầu 2: Xe còn đủ trọng tải chở được thì chọn tiếp kiện hàng khác thỏa mãn yêu cầu 1.

Em hãy lập trình giúp cửa hàng xác định trọng lượng các kiện hàng của chuyến xe đầu tiên.

Dữ liệu vào: Đọc từ file GOOD.INP gồm hai dòng:

  • Dòng 1: gồm số nguyên dương n (1 <n<103) là số kiện hàng và số nguyên dương m (0 < m < 109) là trọng lượng của xe tải. Giữa n và m được cách nhau bởi dấu cách.
  • Dòng 2: gồm n số nguyên dương a[i] (0 < a[i] <109, a[i] < m, 1<i<n) thể hiện trọng lượng của kiện hàng thứ i. Giữa các số được cách nhau bởi dấu cách.

Kết quả: Ghi ra file GOOD.OUT các số nguyên dương là trọng lượng của các kiện hàng trong chuyến xe đầu tiên theo trọng lượng giảm dần.

GOOD.INPGOOD.OUT
5 10

7 5 1 3 8

8 1
5 12

2 8 2 4 1

8 4

 

 

Giải thích bộ test 1:

Có n = 5 kiện hàng và xe có trọng tải m = 10 tấn Các kiện hàng có trọng lượng lần lượt là: 7 5 1 3 8 Vậy các kiện hàng được chở đi trong chuyến đầu tiên có trọng lượng lần lượt là 8 và 1.

Vì kiện hàng có trọng lượng là 8 lớn hơn trọng lượng các kiện hàng còn lại và 8 < m=10 nên được ưu tiên chọn. Trọng tải xe còn có thể chứa được là 10 – 8 = 2, nên chọn tiếp kiện hàng có trọng lượng là 1.

…………………………………………………… HẾT…………………………………………………….

Thí sinh không được sử dụng tài liệu. Giám thị không giải thích gì thêm.

Họ và tên thí sinh: …………………………………………………………. Số báo danh:……………………………………………………………..

 

 

Đáp án bài 1: Tương đồng – SAME.*

1.1 Đáp án bài 1:

import sys
from collections import Counter
sys.stdin = open("SAME.INP", "r")
sys.stdout = open("SAME.OUT", "w")
n = int(sys.stdin.readline().strip())  # Đọc số lượng phần tử (không cần dùng)
a = list(map(int, sys.stdin.readline().split()))  # Đọc danh sách số
tanso = Counter(a)  # Đếm tần số xuất hiện của từng số
tansolonnhat = max(tanso.values())  # Tìm tần số lớn nhất
print(tansolonnhat)  # Ghi kết quả ra file

1.2 CÁCH GIẢI 1:

1️⃣  Đọc dữ liệu từ file:

  • Vì bạn muốn dùng sys.stdin, ta mở file bằng sys.stdin = open(“SAME.INP”, “r”).
  • Đọc số n (số lượng phần tử) nhưng không cần dùng đến.
  • Đọc danh sách số nguyên từ file.

2️⃣ Đếm tần số xuất hiện của từng số:

  • Dùng collections.Counter để đếm số lần xuất hiện của mỗi phần tử.

3️⃣ Tìm tần số lớn nhất:

  • Duyệt qua các giá trị trong Counter và lấy giá trị lớn nhất bằng max(freq.values()).

4️⃣ Ghi kết quả ra file:

  • In kết quả ra sys.stdout, kết quả sẽ được lưu vào “SAME.OUT”.

⏳ Độ phức tạp

  • Đọc dữ liệu: O(n)
  • Đếm tần số: O(n)
  • Tìm max: O(n)
  • Tổng: O(n) (rất tối ưu ✅).

👉 Tóm lại, ta chỉ cần duyệt danh sách 1 lần để đếm tần số và 1 lần để tìm giá trị lớn nhất. 🚀

 

Đáp án bài 2: Tách xâu – STRING.*

2.1 Đáp án bài 2:

import sys
sys.stdin = open("STRING.INP", "r")
sys.stdout = open("STRING.OUT", "w")
s = sys.stdin.readline().strip()
chu = []
so = []
# Phân loại ký tự
for i in s:
    if i.isalpha():
        chu.append(i)
    elif i.isdigit():
        so.append(i)
# Xử lý yêu cầu bài toán
chu.reverse()  # Đảo ngược thứ tự chữ cái
so.sort()  # Sắp xếp các chữ số theo thứ tự tăng dần
# Ghi kết quả ra file
print("".join(chu))
print("".join(so))

2.2 CÁCH GIẢI:

Phân tích bài toán

Bài toán yêu cầu:

  1. Tách các chữ cái trong xâu và đảo ngược thứ tự xuất hiện của chúng.
  2. Tách các chữ số trong xâu và sắp xếp chúng theo thứ tự tăng dần.

Cách giải

  • Duyệt qua từng ký tự của xâu:
    • Nếu là chữ cái, thêm vào danh sách chu.
    • Nếu là chữ số, thêm vào danh sách so.
  • Đảo ngược danh sách letters.
  • Sắp xếp danh sách digits theo thứ tự tăng dần.
  • Ghi kết quả ra file.

Độ phức tạp

  • Duyệt chuỗi O(n)
  • Đảo ngược danh sách chữ O(n)
  • Sắp xếp danh sách số O(k log k) (với k là số lượng chữ số, k ≤ n)
  • Tổng thể: O(n log n) ~ O(n) trong thực tế.

 

Đáp án Bài 3:  May mắn – LUCKY.*

3.1 Đáp án :

 

import sys
sys.stdin = open("LUCKY.INP", "r")
sys.stdout = open("LUCKY.OUT", "w")

def tinh_trung_binh_lan_can(ma_tran, i, j, m, n):
    lan_can = []
    huong = [(-1, 0), (1, 0), (0, -1), (0, 1)]  # Trái, phải, trên, dưới

    for dx, dy in huong:
        ni, nj = i + dx, j + dy
        if 0 <= ni < m and 0 <= nj < n:
            lan_can.append(ma_tran[ni][nj])

    return sum(lan_can) / len(lan_can) if lan_can else 0
m, n = map(int, sys.stdin.readline().split())
ma_tran = [list(map(int, sys.stdin.readline().split())) for _ in range(m)]

so_nguoi_may_man = 0

# Kiểm tra từng ô trong ma trận
for i in range(m):
    for j in range(n):
        trung_binh_lan_can = tinh_trung_binh_lan_can(ma_tran, i, j, m, n)
        if ma_tran[i][j] > trung_binh_lan_can:
            so_nguoi_may_man += 1

print(so_nguoi_may_man)

 

3.2 CÁCH GIẢI

Cách giải bài toán:

  1. Đọc dữ liệu đầu vào:
    • Đọc kích thước ma trận m x n.
    • Đọc các giá trị của ma trận từ file.
  2. Tính toán số người may mắn:
    • Với mỗi vị trí (i, j), tính trung bình cộng của các ô xung quanh (trái, phải, trên, dưới).
    • Nếu giá trị ở (i, j) lớn hơn trung bình đó, thì người ở vị trí đó là người may mắn.
  3. Xuất kết quả:
    • Ghi số lượng người may mắn ra file kết quả.

 

Đáp án bài 4:  Tam giác -TRIANGLE.*

4.1 Đáp án:

 

import sys, math

sys.stdin = open("TRIANGLE.INP", "r")
sys.stdout = open("TRIANGLE.OUT", "w")

# Đọc dữ liệu
n = int(sys.stdin.readline().strip())
que = list(map(int, sys.stdin.readline().split()))

dem_tam_giac = 0
dien_tich_lon_nhat = 0.0

# Duyệt mọi bộ 3 que khác nhau
for i in range(n - 2):
    for j in range(i + 1, n - 1):
        for k in range(j + 1, n):
            a = que[i]
            b = que[j]
            c = que[k]

            # Sắp xếp 3 cạnh
            x, y, z = sorted([a, b, c])

            # Kiểm tra điều kiện tam giác
            if x + y > z:
                dem_tam_giac += 1

                # Tính diện tích theo công thức Heron
                p = (x + y + z) / 2
                dien_tich = math.sqrt(p * (p - x) * (p - y) * (p - z))

                if dien_tich > dien_tich_lon_nhat:
                    dien_tich_lon_nhat = dien_tich

# Xuất kết quả
print(dem_tam_giac)
if dem_tam_giac == 0:
    print(-1)
else:
    print(f"{dien_tich_lon_nhat:.2f}")

✨ Ý tưởng bài toán

Alice có n que tính, chọn 3 que bất kỳ để ghép thành tam giác.

1️⃣ Điều kiện tạo thành tam giác

Với 3 cạnh a, b, c (đã sắp tăng dần):

a + b > c

2️⃣ Hai tam giác khác nhau

→ Chỉ cần khác chỉ số que tính, dù độ dài bằng nhau vẫn tính là khác.

3️⃣ Diện tích tam giác (Công thức Heron)

p = (a + b + c) / 2
S = sqrt(p * (p - a) * (p - b) * (p - c))

4️⃣ Yêu cầu

  • Đếm tổng số tam giác

  • Tìm diện tích lớn nhất

  • Nếu không có tam giác → in -1


🧠 Độ phức tạp

  • n < 100

  • Duyệt 3 vòng lặp:
    👉 O(n³) ≈ 100³ = 1.000.000 → chạy thoải mái

📌 Ví dụ minh họa

Input

5
1 4 5 2 3

Output

3
6.00

Input

3
1 2 3

Output

0
-1

🎯 Nhận xét chuẩn bài thi

✔ Đúng yêu cầu đề
✔ Không trùng tam giác
✔ Xử lý số thực chính xác
✔ In đúng định dạng
✔ Code rõ ràng – dễ chấm điểm

Đáp án bài 5: Hàng hóa – GOOD.*

5.1 Đáp án bài Hàng Hóa:

import sys
sys.stdin = open("GOOD.INP", "r")
sys.stdout = open("GOOD.OUT", "w")
n, m = map(int, sys.stdin.readline().split())
trong_luong = list(map(int, sys.stdin.readline().split()))

# Sap xep danh sach kien hang theo thu tu tang dan
trong_luong.sort()
trong_luong=trong_luong[::-1]
chon = []
tong_trong_luong = 0

# Duyet qua tung kien hang theo thu tu tang dan
for w in trong_luong:
    if tong_trong_luong + w <= m:  # Neu them kien hang vao van khong vuot tai trong
        chon.append(w)
        tong_trong_luong += w
    elif tong_trong_luong>m:
        break  # Neu qua tai thi dung

# Ghi ket qua ra file theo thu tu giam dan
print(*chon)

1. Mô tả bài toán (hiểu từ chương trình)

  • n kiện hàng, mỗi kiện có trọng lượng cho trước.

  • Xe có tải trọng tối đa là m.

  • Hãy chọn các kiện hàng sao cho:

    • Tổng trọng lượng không vượt quá m

    • Ưu tiên lấy các kiện nặng trước

  • In ra danh sách các kiện hàng được chọn.


2. Phân tích từng phần chương trình

🔹 Đọc dữ liệu

n, m = map(int, sys.stdin.readline().split())
trong_luong = list(map(int, sys.stdin.readline().split()))
  • n: số kiện hàng

  • m: tải trọng tối đa

  • trong_luong: danh sách trọng lượng các kiện


🔹 Sắp xếp danh sách kiện hàng

trong_luong.sort()
trong_luong = trong_luong[::-1]
  • Ban đầu sắp xếp tăng dần

  • Sau đó đảo ngược → giảm dần

  • Mục đích:

    • Xét kiện nặng trước

    • Áp dụng chiến lược tham lam (Greedy)


🔹 Biến hỗ trợ

chon = []
tong_trong_luong = 0
  • chon: lưu các kiện được chọn

  • tong_trong_luong: tổng trọng lượng hiện tại


🔹 Thuật toán chọn kiện hàng (Greedy)

for w in trong_luong:
if tong_trong_luong + w <= m:
chon.append(w)
tong_trong_luong += w
elif tong_trong_luong > m:
break

Ý tưởng thuật toán 💡

  • Duyệt từng kiện theo thứ tự trọng lượng giảm dần

  • Với mỗi kiện:

    • Nếu thêm vào không vượt quá tải trọng → chọn

    • Nếu đã vượt tải → dừng lại

👉 Đây là thuật toán tham lam:

  • Ở mỗi bước, chọn kiện nặng nhất có thể

  • Không quay lui, không xét lại


🔹 In kết quả

print(*chon)
  • In danh sách các kiện hàng được chọn

  • Thứ tự đã là giảm dần


3. Tóm tắt thuật toán

👉 Các bước chính:

  1. Đọc dữ liệu đầu vào.

  2. Sắp xếp các kiện hàng theo trọng lượng giảm dần.

  3. Lần lượt xét từng kiện:

    • Nếu thêm vào vẫn không vượt tải → chọn.

    • Nếu vượt tải → dừng.

  4. In ra các kiện đã chọn.


4. Độ phức tạp của chương trình

⏱️ Độ phức tạp thời gian

Công đoạnĐộ phức tạp
Sắp xếp danh sáchO(n log n)
Duyệt chọn kiệnO(n)
In kết quảO(n)

➡️ Tổng thời gian:

O(nlog⁡n)


💾 Độ phức tạp bộ nhớ

  • Danh sách trọng lượng: O(n)

  • Danh sách chọn: O(n)

➡️ Tổng bộ nhớ:

O(n)


5. Nhận xét theo chuẩn bài thi

✅ Thuật toán đơn giản – hiệu quả
✅ Phù hợp với bài toán có ràng buộc nhỏ và trung bình
✅ Dễ cài đặt, dễ hiểu, dễ chấm điểm

⚠️ Lưu ý:

  • Đây là bài toán tham lam, không đảm bảo tối ưu trong mọi trường hợp nếu đề yêu cầu tối đa tổng trọng lượng (bài toán cái túi 0/1).

  • Tuy nhiên, nếu đề yêu cầu ưu tiên kiện nặng, thuật toán là đúng.

 

Câu hỏi thường gặp về Tổng hợp 75 Đề thi HSG Tin học THCS Python

1. Bộ 75 đề thi HSG Tin học này có lời giải chi tiết (Full Code) không? Có. Toàn bộ 75 đề thi trong bài viết này đều đi kèm đáp án và mã nguồn (Source Code) được viết bằng ngôn ngữ lập trình Python. Chúng tôi cũng bổ sung các giải thích về thuật toán để các em học sinh hiểu rõ cách tư duy giải quyết vấn đề chứ không chỉ copy code.

2. Tài liệu này phù hợp cho học sinh lớp mấy? Bộ tài liệu này được biên soạn bám sát cấu trúc đề thi Học sinh giỏi cấp Huyện và cấp Tỉnh, phù hợp nhất cho học sinh khối THCS (Lớp 8, Lớp 9). Ngoài ra, học sinh lớp 6, 7 bắt đầu làm quen với Python nâng cao cũng có thể sử dụng để rèn luyện tư duy logic.

3. Tôi có thể tải file PDF đề thi và đáp án về máy tính không? Được. Ở cuối bài viết, Vi Tính Tấn Dân có cung cấp liên kết tải xuống trọn bộ tài liệu định dạng PDF để thầy cô và các em học sinh tiện in ấn và ôn tập offline.

4. Code Python trong bài viết sử dụng phiên bản nào? Các bài giải mẫu được viết tương thích tốt nhất với Python 3.x (phiên bản phổ biến nhất hiện nay trong giáo dục và thi cử). Bạn có thể chạy code trên các IDE thông dụng như Thonny, PyCharm, hoặc VS Code.

5. Ngoài Python, đề thi có đáp án bằng C++ hay Pascal không? Hiện tại, bài viết này tập trung chuyên sâu vào ngôn ngữ Python. Tuy nhiên, cấu trúc thuật toán là giống nhau. Nếu bạn cần tài liệu C++ hoặc Pascal, vui lòng tham khảo các chuyên mục khác trên website vitinhtandan.com hoặc để lại bình luận để chúng tôi hỗ trợ.

 

 

Nếu bạn thấy hay ! xin bạn 1 phút ! vui lòng đánh giá 5 sao cho trang website của chúng tôi ! để có động lực làm thêm nhiều bài hay nữa ! cảm ơn quý khách nhé !

Khóa học Python online từ cơ bản đến nâng cao

 

2 Đề thi học sinh giỏi tin học lớp 9 cấp tỉnh Bình Định 2021-2022

Đề 2 thi học sinh giỏi lớp 9 môn Tin học – Tỉnh Bình Định năm 2022

Cập nhật mới nhất: Bộ đề thi chọn học sinh giỏi lớp 9 môn Tin học năm học 2021–2022 của tỉnh Bình Định đã được tổng hợp và chia sẻ miễn phí tại website vitinhtandan.com. Đây là tài liệu cực kỳ hữu ích giúp các bạn học sinh ôn luyện, rèn tư duy lập trình và chuẩn bị cho kỳ thi HSG cấp tỉnh, cấp quốc gia.


1. Giới thiệu đề thi Tin học Bình Định năm 2022

Kỳ thi học sinh giỏi lớp 9 môn Tin học tỉnh Bình Định năm học 2021–2022 gồm 5 bài lập trình, được thiết kế theo hướng đánh giá khả năng tư duy thuật toán, xử lý dữ liệu, và khả năng vận dụng ngôn ngữ lập trình (Pascal hoặc Python).
Thời gian làm bài: 180 phút, thí sinh không được dùng Internetchỉ sử dụng trình biên dịch có sẵn.

Đề thi được biên soạn kỹ lưỡng, bám sát nội dung chương trình Tin học THCS mở rộng, đồng thời có tính phân loại cao giúp phát hiện học sinh có năng khiếu lập trình thực sự.


2. Cấu trúc đề thi và nội dung các bài tập

Đề thi gồm 5 bài, với độ khó tăng dần:

  1. Bài 1 – Xử lý mảng 1 chiều:

    • Đọc vào n số nguyên.

    • Tìm giá trị lớn nhất, nhỏ nhất, trung bình cộng hoặc số phần tử thỏa mãn điều kiện nhất định.
      Kiểm tra kỹ năng duyệt mảng và điều kiện logic.

  2. Bài 2 – Ma trận (mảng 2 chiều):

    • Tính tổng theo hàng, cột hoặc đường chéo của ma trận.

    • Xoay hoặc phản chiếu ma trận.
      Đánh giá khả năng làm việc với cấu trúc dữ liệu 2 chiều.

  3. Bài 3 – Xử lý chuỗi:

    • Đếm số ký tự, tách từ, hoặc xử lý chuỗi ký tự theo quy tắc cho trước.
      Kiểm tra khả năng làm việc với string và hàm ký tự.

  4. Bài 4 – Thuật toán nâng cao:

    • Thường là bài quy hoạch động, tham lam, hoặc xử lý tổ hợp (ví dụ: chia kẹo, chọn phần tử, tối ưu tổng).
      Đánh giá tư duy lập trình và chiến lược giải bài toán phức tạp.

  5. Bài 5 – Bài toán đồ thị hoặc bài toán tìm đường đi:

    • Có thể yêu cầu áp dụng DFS, BFS, Dijkstra hoặc Floyd-Warshall.
      Kiểm tra năng lực tư duy thuật toán của thí sinh giỏi.


3. Tài liệu đi kèm và hướng dẫn giải chi tiết

Website cung cấp đầy đủ bộ đề thi gốc (file PDF/Word)lời giải chi tiết bằng Python  giúp học sinh dễ dàng:

  • Ôn lại các dạng bài xử lý mảng, ma trận, chuỗi.

  • Nắm vững thuật toán sắp xếp, tìm kiếm, duyệt đồ thị, quy hoạch động.

  • Biết cách phân tích đề – lập hướng giải – viết code tối ưu.



4. Vì sao nên luyện đề thi Tin học Bình Định 2022

  • ✅ Giúp làm quen với cấu trúc và độ khó thực tế của đề thi HSG cấp tỉnh.

  • ✅ Củng cố tư duy thuật toán và kỹ năng lập trình chuyên sâu.

  • ✅ Là tài liệu tham khảo quý giá cho các tỉnh khác có đề thi tương tự.

  • ✅ Rèn khả năng viết code sạch, tối ưu và có tổ chức.

Đặc biệt, đề thi Bình Định 2022 được đánh giá là một trong những đề hay nhất trong khu vực miền Trung, vì cân bằng giữa kiến thức cơ bản và bài toán tư duy.



Kết luận

Bộ Đề thi học sinh giỏi lớp 9 môn Tin học tỉnh Bình Định năm 2022 là tài liệu không thể thiếu cho những bạn đam mê lập trình, mong muốn chinh phục kỳ thi học sinh giỏi cấp tỉnh hoặc thi vào lớp 10 chuyên Tin.
Hãy tải về, thử sức với từng bài, và đối chiếu lời giải để hoàn thiện kỹ năng lập trình của bạn nhé!

 

Nếu bạn thấy hay ! xin bạn 1 phút ! vui lòng đánh giá 5 sao cho trang website của chúng tôi ! để có động lực làm thêm nhiều bài hay nữa ! cảm ơn quý khách nhé !

Khóa học Python online từ cơ bản đến nâng cao

 

Khóa học Python online từ cơ bản đến nâng cao

  • Hotline: 093.717.9278 ( Gặp Tấn Dân Cử Nhân Công Nghệ Thông Tin)

 

Các đề ôn thi để chuẩn bị thi Cấp Huyện thì các em vào đường dẫn phía dưới để tham khảo giúp thầy nhé!

  1. Giải đề 1 và đáp án thi Học sinh giỏi tin học Python C++ THCS có tài liệu ôn thi
  2. Giải đề 2 và đáp án thi Học sinh giỏi tin học Python C++ THCS có tài liệu ôn thi

50 Đề thi học sinh giỏi Tin Học trên cả nước Việt Nam

Đề 1:  Đề THCS – Bà Rịa Vũng Tàu 2022 – 2023

Đề 2 thi học sinh giỏi lớp 9 môn Tin học – Tỉnh Bình Định năm 2022

50 Đề thi học sinh giỏi Tin học trên cả nước Việt Nam (Có đáp án và lời giải chi tiết)

Cập nhật mới nhất 2025:
Tổng hợp 50 đề thi học sinh giỏi môn Tin học lớp 9 và THCS của các tỉnh, thành phố trên cả nước Việt Nam, kèm lời giải chi tiết bằng Python hoặc Pascal. Bộ sưu tập này giúp học sinh ôn luyện toàn diện, chuẩn bị tốt nhất cho kỳ thi HSG cấp huyện, cấp tỉnh và thi vào lớp 10 chuyên Tin.


1. Giới thiệu bộ 50 đề thi Tin học trên cả nước

Môn Tin học là môn học đòi hỏi tư duy logic, kỹ năng lập trình và khả năng giải quyết vấn đề.
Bộ “50 Đề thi học sinh giỏi Tin học trên cả nước Việt Nam” được tổng hợp từ nhiều năm của các tỉnh như:
Hà Nội, TP. Hồ Chí Minh, Bình Định, Tiền Giang, Nghệ An, Đà Nẵng, Hải Phòng, Lâm Đồng, Cần Thơ, Thái Bình, Nam Định, Đồng Tháp,…

Mỗi đề đều gồm 5 bài lập trình, được sắp xếp từ dễ đến khó, giúp học sinh:

  • Ôn tập cấu trúc ngôn ngữ (Python hoặc Pascal)

  • Củng cố kỹ năng thuật toán cơ bản

  • Phát triển khả năng tư duy giải quyết bài toán thực tế


2. Nội dung và dạng bài thường gặp trong các đề thi

Sau khi tổng hợp 50 đề thi, có thể chia các dạng bài Tin học học sinh giỏi phổ biến như sau:

Dạng 1: Xử lý mảng 1 chiều

  • Tìm số lớn nhất, nhỏ nhất, tổng, trung bình, phần tử thỏa điều kiện.

  • Sắp xếp, đếm, lọc phần tử.
    Rèn kỹ năng duyệt mảng, sử dụng vòng lặp và điều kiện.

Dạng 2: Ma trận (mảng 2 chiều)

  • Tính tổng hàng, cột, đường chéo.

  • Xoay ma trận, phản chiếu, tìm phần tử đặc biệt.
    Kiểm tra khả năng làm việc với cấu trúc dữ liệu hai chiều.

Dạng 3: Xử lý chuỗi ký tự

  • Đếm từ, tách chữ, đếm nguyên âm – phụ âm.

  • Loại bỏ ký tự, viết hoa chữ cái đầu, so sánh chuỗi.
    Củng cố kỹ năng làm việc với string trong Python.

⚙️ Dạng 4: Thuật toán và quy hoạch động (Dynamic Programming)

  • Bài toán con ếch, chia kẹo, dãy con tăng dài nhất, ba lô,…
    Đòi hỏi tư duy phân tích và tối ưu thuật toán.

Dạng 5: Đồ thị và đường đi ngắn nhất

  • Duyệt đồ thị bằng DFS, BFS, tìm cây khung nhỏ nhất (Prim, Kruskal), hoặc đường đi ngắn nhất (Dijkstra, Floyd).
    Đây là phần khó, thường xuất hiện ở đề cấp tỉnh và chuyên Tin.


3. Lợi ích khi luyện 50 đề thi Tin học HSG

Học sinh khi luyện bộ đề này sẽ đạt được nhiều kỹ năng quan trọng:

Nắm chắc cấu trúc lập trình cơ bản: vòng lặp, điều kiện, hàm, mảng, chuỗi.
Hiểu rõ tư duy thuật toán: cách phân tích đề, chia bài toán nhỏ, tìm hướng tối ưu.
Làm quen với phong cách ra đề của các tỉnh – chuẩn bị tốt cho kỳ thi thật.
Tăng tốc độ lập trình và tư duy khi viết code.

Kết luận

Bộ 50 Đề thi học sinh giỏi Tin học trên cả nước Việt Nam là tài liệu không thể thiếu cho những ai đam mê lập trình và mong muốn đạt giải cao trong các kỳ thi học sinh giỏi.
Mỗi đề là một thử thách thú vị, giúp bạn nâng cao tư duy thuật toán, khả năng lập trình và tốc độ xử lý vấn đề.

Hãy tải về, luyện tập hằng ngày và chinh phục ước mơ trở thành học sinh chuyên Tin giỏi nhất!

Nếu bạn thấy hay ! xin bạn 1 phút ! vui lòng đánh giá 5 sao cho trang website của chúng tôi ! để có động lực làm thêm nhiều bài hay nữa ! cảm ơn quý khách nhé !

Khóa học Python online từ cơ bản đến nâng cao

 

Khóa học Python online từ cơ bản đến nâng cao

  • Hotline: 093.717.9278 ( Gặp Tấn Dân Cử Nhân Công Nghệ Thông Tin)

 

2 Đề thi học sinh giỏi Tin học THCS cấp tỉnh Tiền Giang có đáp án

2 Đề thi học sinh giỏi Tin học THCS cấp tỉnh Tiền Giang có đáp án

SỞ GIÁO DỤC VÀ ĐÀO TẠO
TỈNH TIỀN GIANG
KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH

TrUnG học Cơ Sở

Năm học 2023-2024
Môn thi: TIN HỌC

Thời gian làm bài: 150 phút, không kể thời gian phát đề
Ngày thi: 27/3/2024

ĐỀ THI CHÍNH THỨC
(Đề thi có 04 trang, gồm 05 bài)

[trustindex no-registration=google]

Các đề ôn thi để chuẩn bị thi Cấp Huyện thì các em vào đường dẫn phía dưới để tham khảo giúp thầy nhé!

  1. Giải đề 1 và đáp án thi Học sinh giỏi tin học Python C++ THCS có tài liệu ôn thi
  2. Giải đề 2 và đáp án thi Học sinh giỏi tin học Python C++ THCS có tài liệu ôn thi
  3. Giải đề 3 thi học sinh giỏi tin học lập trình Python có đáp án
  4. Giải đề 4 ôn thi học sinh giỏi Tin Học THCS lập trình Python có đáp án
  5. Giải đề 5 và đáp án thi HSG Tin Python có số Pell.
  6. Giải đề 6 và đáp án bồi dưỡng học sinh giỏi tin 10 có số Armstrong
  7. Giải đề 7 và đáp án  thi học sinh giỏi tin học 10 Python có số Collatz
  8. Giải đề 8 trong 20 đề Bồi dưỡng học sinh giỏi Tin học lớp 9 có số Kaprekar.
  9. Giải đề 9 thi HSG Tin học lớp 8 lập trình Python có số Happy
  10. Giải đề 10 thi tin học trẻ THPT có bài  In các xâu con trong xâu s.
TỔNG quan các bài thi

Thứ tựTên bàiFile chương trìnhFile dữ liệu vàoFile kết quả
1Tiền điệnELCOST.*ELCOST.INPELCOST.OUT
2Độ mạnh của xâuSTRONG.*STRONG.INPSTRONG.OUT
3Tổng dòng cộtSUM.*SUM.INPSUM.OUT
4Xâu lặpSUBSTR.*SUBSTR.INPSUBSTR.OUT
5Phần thưởngGIFT.*GIFT.INPGIFT.OUT

Dấu * được thay thế bởi PAS, CPP, PY của ngôn ngữ lập trình được sử dụng tương ứng là Free Pascal, C++, Python hoặc phần mở rộng tương ứng với NNLT khác.

 

 

 

Học sinh chỉ được chọn một trong các môi trường quy định ở trên lập trình để làm toàn bộ bài thi.

Bài 1: Tiền điện (4,0 điểm) Tên chương trình: ELCOST.*

Giá bán lẻ điện sinh hoạt được tính theo 3 bậc gồm:

  • Bậc 1: 100 Kwh đầu tiên, có giá là 2500 đồng/Kwh
  • Bậc 2: Từ Kwh 101 đến 200, có giá là 3000 đồng/Kwh
  • Bậc 3: Từ Kwh 201 trở lên, có giá là 3500 đồng/Kwh

Yêu cầu: Tính tổng tiền điện phải trả của một khu phố gồm n hộ gia đình.

Dữ liệu vào: Đọc từ file văn bản ELCOST.INP gồm hai dòng:

  • Dòng 1: Chứa số nguyên dương n (1 < n < 104) là số lượng hộ gia đình.
  • Dòng 2: Chứa n số nguyên dương ai (1 < i < n, 1 < ai < 104), với mỗi ai là số Kwh sử dụng của hộ gia đình thứ i. Giữa hai số liên tiếp được cách nhau bởi một dấu cách.

Kết quả: Ghi ra file văn bản ELCOST.OUT một số nguyên dương là tổng tiền điện của n hộ gia đình.

Ví dụ:

ELCOST.INPELCOST.OUT
3

15 165 205

1050000

 

 

Giải thích:

Có 3 hộ gia đình sử dụng số Kwh lần lượt là: 15, 165 và 205

Số tiền hộ thứ nhất: 15*2500 = 37500

Số tiền hộ thứ hai: 100*2500 + 65*3000 = 445000

Số tiền hộ thứ ba: 100*2500 + 100*3000 + 5*3500 = 567500

Nên tổng số tiền là: 37500 + 445000 + 567500 = 1050000

Bài 2: Độ mạnh của xâu (4,0 điểm) Tên chương trình: STRONG.*

Cho xâu s chỉ gồm các kí tự in thường trong bảng chữ cái Tiếng Anh và kí tự số từ ‘0’ đến ‘9’.

Yêu cầu: Tìm độ mạnh của xâu. Biết rằng độ mạnh của xâu là tích của số kí tự phân biệt xuất hiện trong xâu với số lần xuất hiện nhiều nhất của một kí tự trong xâu.

Dữ liệu vào: Đọc từ file văn bản STRONG.INP gồm một dòng chứa xâu s có chiều dài không quá 103 kí tự. Trong xâu không chứa khoảng trắng và kí tự đặc biệt.

Kết quả: ghi ra file văn bản STRONG.OUT một số nguyên dương là độ mạnh của xâu.

Ví dụ:

STRONG.INPSTRONG.OUT
xy11z2yyzxy0y30
ggggg__________________5

Giải thích:

Ở test 1: Xâu s = ‘xy11z2yyzxy0y’. Số kí tự phân biệt trong xâu s là 6 (gồm ‘x’, ‘y’, ‘1’, ‘z’, ‘2’, ‘0’) và số lần xuất hiện nhiều nhất của một kí tự là 5 (kí tự ‘y’). Nên độ mạnh của xâu là 6 * 5 = 30.

Ở test 2: Xâu s = ‘ggggg’. Số kí tự phân biệt trong xâu s là 1 (kí tự ‘g’) và số lần xuất hiện nhiều nhất là 5. Nên độ mạnh của xâu là 1 * 5 = 5.

Bài 3: Tổng dòng cột (4,0 điểm)  Tên chương trình: SUM.*

Cho ma trận a gồm m dòng và n cột. Ma trận b được tạo bằng cách: bij = (tổng dòng i trên ma trận a + tổng cột j trên ma trận a) – aij Yêu cầu: Tìm giá trị nhỏ nhất trong ma trận b.

Dữ liệu vào: Đọc từ file văn bản SUM.INP gồm nhiều dòng:

  • Dòng 1: Chứa hai số nguyên dương theo thứ tự là m, n (1 < m, n < 102). Giữa hai số cách nhau bởi một dấu cách.
  • m dòng tiếp theo, mỗi dòng chứa n số nguyên dương aij (0 < aij < 109). Giữa hai số liên tiếp được cách nhau bởi một dấu cách.

Kết quả: Ghi ra file văn bản SUM.OUT một số nguyên dương là giá trị nhỏ nhất tìm được trong ma trận b.

Ví dụ:

SUM.INPSUM.OUT
2 310
3 2 4
2 1 5

Giải thích: Ma trận b là 11 10 14 11 10 12

Nên giá trị nhỏ nhất trong ma trận b là 10.

Bài 4: Xâu lặp (4,0 điểm) Tên chương trình: SUBSTR.*

Xâu lặp là một xâu có đoạn đầu ngắn nhất của nó được lặp lại nhiều lần. Ví dụ ‘xyxyxyxy’ là một xâu lặp vì nó có đoạn đầu ngắn nhất là ‘xy’ được lặp lại nhiều lần. ‘xyxy’ cũng được lặp lại nhưng không được tính là đoạn đầu vì nó không ngắn nhất.

Yêu cầu: Cho n xâu. Hãy ghép đoạn đầu của mỗi xâu lặp theo thứ tự xuất hiện của xâu (nếu xâu đó là xâu lặp).

Dữ liệu vào: Đọc từ file văn bản SUBSTR.INP gồm nhiều dòng:

  • Dòng 1: Chứa số nguyên dương n (1 < n < 103) là số lượng xâu.
  • n dòng tiếp theo, mỗi dòng chứa một xâu có độ dài không quá 103 kí tự.

Lưu ý: Trong xâu chỉ chứa kí tự thường từ ‘a’ đến ‘z’ trong bảng chữ cái Tiếng Anh (không chứa khoảng trắng, kí tự số và các kí tự đặc biệt). Dữ liệu vào đảm bảo luôn có xâu lặp.

Kết quả: Ghi ra file văn bản SUBSTR.OUT là xâu ghép thu được.

Ví dụ:

SUBSTR.INPSUBSTR.OUT
4xyabach
xyxyxyxy
abcab
abacabac
hhh

 

 

Giải thích:

Trong 4 xâu, có 3 xâu lặp theo thứ tự là: ‘xyxyxyxy’, ‘abacabac’, ‘hhh’. Ba đoạn đầu tương ứng là ‘xy’, ‘abac’, ‘h’. Nên xâu ghép là: ‘xyabach’.

Bài 5: Phần thưởng (4,0 điểm)  Tên chương trình: GIFT.*

An được mẹ cho một số phần thưởng. Có nhiều phần thưởng được xếp thành một hàng, mỗi phần thưởng có giá trị trong khoảng từ 1 đến 109. An muốn chọn những phần thưởng có giá trị tăng dần liên tiếp nhiều nhất.

Yêu cầu: Cho biết số lượng phần thưởng mà An chọn được như mong muốn.

Dữ liệu vào: Đọc từ file văn bản GIFT.INP gồm một dòng chứa các số nguyên dương là giá trị của các phần thưởng. Giữa hai số liên tiếp nhau cách nhau bởi một dấu cách.

Kết quả: Ghi ra file văn bản GIFT.OUT một số nguyên dương là số lượng phần thưởng An chọn được.

Ví dụ:

GIFT.INPGIFT.OUT
2 4 3 5 7 8 64
1 5 4 3 5 6 6 5 8 63

 

 

Giải thích:

Ở test 1: Độ dài phần thưởng liên tiếp tăng dần nhiều nhất là 4 (2 4 3 5 7 8 6)

Ở test 2: Độ dài phần thưởng liên tiếp tăng dần nhiều nhất là 3 (1 5 4 3 5 6 6 58 6) ……. -…………… ……………….. HET……… –

Thí sinh không được sử dụng tài liệu. Giám thị không giải thích gì thêm.

Họ và tên thí sinh:     Số báo danh:

PDF Loading...

Đáp án bài 1: Tiền điện (ELCOST)

Ý tưởng tối ưu

  • Tính tiền theo từng mức giá:
    • 100 Kwh đầu tiên: 2500 đ/Kwh
    • 101 → 200 Kwh: 3000 đ/Kwh
    • 201 Kwh trở lên: 3500 đ/Kwh
  • Duyệt qua từng hộ gia đình, tính tổng tiền.

Code Python

import sys

sys.stdin = open("ELCOST.INP", "r")
sys.stdout = open("ELCOST.OUT", "w")

n = int(input().strip())
ds_kwh = list(map(int, input().split()))

tong_tien = 0
for so_kwh in ds_kwh:
    if so_kwh <= 100:
        tong_tien += so_kwh * 2500
    elif so_kwh <= 200:
        tong_tien += 100 * 2500 + (so_kwh - 100) * 3000
    else:
        tong_tien += 100 * 2500 + 100 * 3000 + (so_kwh - 200) * 3500

print(tong_tien)

Độ phức tạp: O(n).


Đáp án bài 2: Độ mạnh của xâu (STRONG)

Ý tưởng tối ưu

  • Sử dụng dictionary (hash map) để đếm số lần xuất hiện của từng ký tự.
  • Tìm số ký tự phân biệt (O(1) mỗi ký tự).
  • Tìm số lần xuất hiện nhiều nhất (O(1) mỗi lần cập nhật).

Code Python

 

import sys
from collections import Counter

sys.stdin = open("STRONG.INP", "r")
sys.stdout = open("STRONG.OUT", "w")

s = input().strip()
tan_suat = Counter(s)

so_ky_tu_phan_biet = len(tan_suat)
tan_suat_max = max(tan_suat.values())

print(so_ky_tu_phan_biet * tan_suat_max)

 

Độ phức tạp: O(n).


Đáp án bài 3: Tổng dòng cột (SUM)

Ý tưởng tối ưu

  • Tiền xử lý tổng hàng và tổng cột để tính giá trị của ma trận B trong O(1).
  • Duyệt nhanh để tìm giá trị nhỏ nhất.

Code Python

 

import sys

sys.stdin = open("SUM.INP", "r")
sys.stdout = open("SUM.OUT", "w")

m, n = map(int, input().split())
ma_tran = [list(map(int, input().split())) for _ in range(m)]

tong_dong = [sum(hang) for hang in ma_tran]
tong_cot = [sum(ma_tran[i][j] for i in range(m)) for j in range(n)]

gia_tri_nho_nhat = float('inf')
for i in range(m):
    for j in range(n):
        b_ij = tong_dong[i] + tong_cot[j] - ma_tran[i][j]
        gia_tri_nho_nhat = min(gia_tri_nho_nhat, b_ij)

print(gia_tri_nho_nhat)

 

Độ phức tạp: O(m × n).


Đáp án bài 4: Xâu lặp (SUBSTR)

Ý tưởng tối ưu

  • Duyệt từ 1 → len(s)//2 để tìm đoạn lặp ngắn nhất.
  • Kiểm tra nhanh bằng cách ghép đoạn lặp nhiều lần.

Code Python

import sys

sys.stdin = open("SUBSTR.INP", "r")
sys.stdout = open("SUBSTR.OUT", "w")

def tim_doan_dau(xau):
    n = len(xau)
    for do_dai in range(1, n + 1):
        if n % do_dai == 0 and xau == xau[:do_dai] * (n // do_dai):
            return xau[:do_dai]
    return xau

n = int(input().strip())
ket_qua = []
for _ in range(n):
    xau = input().strip()
    ket_qua.append(tim_doan_dau(xau))

print("".join(ket_qua))

Độ phức tạp: O(n²) trong trường hợp xấu nhất, nhưng thường nhanh hơn.


Đáp án bài 5: Phần thưởng (GIFT)

Ý tưởng tối ưu

  • Duyệt 1 lần qua danh sách để tìm dãy tăng dần dài nhất (O(n)).

Code Python

 

import sys

sys.stdin = open("GIFT.INP", "r")
sys.stdout = open("GIFT.OUT", "w")

phan_thuong = list(map(int, input().split()))

max_do_dai = 1
do_dai_hien_tai = 1

for i in range(1, len(phan_thuong)):
    if phan_thuong[i] > phan_thuong[i - 1]:
        do_dai_hien_tai += 1
    else:
        max_do_dai = max(max_do_dai, do_dai_hien_tai)
        do_dai_hien_tai = 1  

print(max(max_do_dai, do_dai_hien_tai))

 

Độ phức tạp: O(n).


Tóm tắt độ phức tạp

Bài toánTối ưu chínhĐộ phức tạp
ELCOSTDuyệt danh sách tính tiền nhanhO(n)
STRONGHash map để đếm tần suấtO(n)
SUMTiền xử lý tổng hàng/cộtO(m × n)
SUBSTRKiểm tra xâu lặp nhanhO(n²) (trường hợp xấu nhất)
GIFTDuyệt 1 lần để tìm dãy tăng dài nhấtO(n)

Tất cả các bài toán đều chạy tối ưu và có thể xử lý nhanh dữ liệu lớn!

Nếu bạn thấy hay ! xin bạn 1 phút ! vui lòng đánh giá 5 sao cho trang website của chúng tôi ! để có động lực làm thêm nhiều bài hay nữa ! cảm ơn quý khách nhé !

Khóa học Python online từ cơ bản đến nâng cao

 

Khóa học Python online từ cơ bản đến nâng cao

1 Đề Thi Học Sinh Giỏi Tin học THCS cấp Tỉnh có đáp án mới nhất

1 Đề Thi Học Sinh Giỏi Tin học THCS cấp Tỉnh Tiền Giang có đáp án mới nhất

KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH
TRUnG học Cơ Sở

Năm học 2022-2023 Môn: TIN HỌC

Thời gian: 150 phút (không kể thời gian giao đề) Ngày thi: 21/3/2023 ^

(Đề thi có 5 trang, gồm 5 bài)

Các đề ôn thi để chuẩn bị thi Cấp Huyện thì các em vào đường dẫn phía dưới để tham khảo giúp thầy nhé!

  1. Giải đề 1 và đáp án thi Học sinh giỏi tin học Python C++ THCS có tài liệu ôn thi
  2. Giải đề 2 và đáp án thi Học sinh giỏi tin học Python C++ THCS có tài liệu ôn thi
  3. Giải đề 3 thi học sinh giỏi tin học lập trình Python có đáp án
  4. Giải đề 4 ôn thi học sinh giỏi Tin Học THCS lập trình Python có đáp án
  5. Giải đề 5 và đáp án thi HSG Tin Python có số Pell.
  6. Giải đề 6 và đáp án bồi dưỡng học sinh giỏi tin 10 có số Armstrong
  7. Giải đề 7 và đáp án  thi học sinh giỏi tin học 10 Python có số Collatz
  8. Giải đề 8 trong 20 đề Bồi dưỡng học sinh giỏi Tin học lớp 9 có số Kaprekar.
  9. Giải đề 9 thi HSG Tin học lớp 8 lập trình Python có số Happy
  10. Giải đề 10 thi tin học trẻ THPT có bài  In các xâu con trong xâu s.

TỔNG quan các BÀi thi

Thứ tự 

Tên bài

File chương trìnhFile dữ liệu vàoFile kết quả
Bài 1Tương đồngSAME.*SAME.INPSAME.OUT
Bài 2Tách xâuSTRING.*STRING.INPSTRING.OUT
Bài 3May mắnLUCKY.*LUCKY.INPLUCKY.OUT
Bài 4Tam giácTRIANGLE.*TRIANGLE.INPTRIANGLE.OUT
Bài 5Chở hàngGOOD.*GOOD.INPGOOD.OUT
Dấu * được thay thế bởi PAS, CPP, PY của ngôn ngữ lập trình được sử dụng tương ứng là Free Pascal, C++, Python hoặc phần mở rộng tương ứng với NNLT khác.

 

 

Bài 1: (4 điểm) Tương đồng? Tên chương trình: SAME.*

Vườn bưởi nhà Alice có n cây. Để theo dõi sự phát triển của các cây bưởi của mình, Alice thường xuyên đo và ghi lại chiều cao của chúng. Trong tuần này, Alice có được bảng chiều cao của các cây bưởi là một dãy số nguyên a[1], a[2],…, a[n], trong đó a[i] là chiều cao của cây bưởi thứ i. Nhìn vào dãy số, Alice biết có những cây có chiều cao trùng nhau và Alice gọi mỗi tần số trùng nhau là tần số “tương đồng”.

Do số lượng cây bưởi nhiều nên Alice muốn nhờ các bạn lập trình tìm tần số tương đồng lớn nhất của các cây bưởi là bao nhiêu?

Dữ liệu vào: Đọc từ file SAME. INP gồm 2 dòng:

  • Dòng 1: gồm một số nguyên dương n (0 < n <106).
  • Dòng 2: gồm n số nguyên dương a[i] (0 < ai <106), mỗi số ứng với chiều cao của một cây bưởi, giữa các số được cách nhau bởi một khoảng trắng.

Kết quả: Ghi ra file SAME.OUT gồm duy nhất một số nguyên dương là tần số tương đồng lớn nhất.

Ví dụ:

SAME.INPsame.out
7

9 8 6 8 5 6 10

2
2

3 10

1

 

 

Giải thích bộ test 1:

Có 1 chiều cao: 5;

Có 2 chiều cao: 6;

Có 2 chiều cao: 8;

Có 1 chiều cao: 9;

Có 1 chiều cao: 10

->Tần số tương đồng lớn nhất là: 2

Bài 2: (4 điểm) Tách xâu?  Tên chương trình: STRING.*

Hôm nay, mẹ và Cám đi dự dạ hội. Tấm cũng rất muốn được đi. Nhưng trước khi đi, mẹ Cám giao cho Tấm một công việc để làm khó Tấm như sau:

Cho một xâu s gồm các ký tự là các chữ cái in hoa hoặc in thường (trong bảng chữ cái Tiếng Anh) và các kí tự số. Mẹ kế yêu cầu Tấm hãy tách các ký tự trong xâu s thành hai phần như sau:

Phần 1: gồm các chữ cái có mặt trong s nhưng viết theo thứ tự ngược lại.

Phần 2: gồm các chữ số có mặt trong xâu s nhưng phải được sắp xếp theo thứ tự từ nhỏ đến lớn.

Nếu Tấm thực hiện xong công việc thì mới được đi dự tiệc. Nhưng Tấm có thời gian rất ít nên chưa giải được bài toán. Các bạn đội tuyển Tin học hãy giúp đỡ Tấm giải bài toán để Tấm còn được đi dự tiệc nhé!

Dữ liệu vào: Đọc từ file STRING.INP gồm 1 dòng chứa xâu s có độ dài không quá 103 ký tự. Dữ liệu vào đảm trong xâu s luôn có kí tự chữ cái và kí tự chữ số. Kết quả: Ghi ra fíle STRING.OUT gồm 2 dòng:

  • Dòng 1: gồm các chữ cái trong xâu s nhưng được viết theo thứ tự ngược lại.
  • Dòng 2: gồm các chữ số trong xâu s, nhưng phải được sắp xếp theo thứ tự từ nhỏ đến lớn.

Ví dụ:

STRING.INPSTRING.OUT
m2aC0ma2T3TamCam

0223

Bài 3: (4 điểm) May mắn?  Tên chương trình: LUCKY.*

Trong buổi tiệc liên hoan cuối năm của công ty cung cấp điện thoại Thế Giới Trẻ, ghế ngồi trong hội trường của khách mời được bố trí thành một ma trận hình chữ nhật gồm m hàng và n cột. Để buổi liên hoan thêm vui vẻ, ban tổ chức cho mỗi khách mời rút ngẫu nhiên một phiếu, trên phiếu có ghi một số nguyên dương trong phạm vi từ 1 đến 109.

Ban tổ chức sẽ trao cho những người may mắn mỗi người một phần quà là một chiếc điện thoại. Biết rằng người may mắn là người có số ghi trong phiếu của

mình lớn hơn trung bình cộng của số trong phiếu của những người ngồi xung quanh người đó.

Xung quanh một người được định nghĩa như sau:

Trường hợp 1: Người ngồi ở vị trí góc (trên trái, dưới trái, trên phải, dưới

phải) của hình chữ nhật thì chỉ có 2 người ngồi xung quanh.

Trường hợp 2: Người ngồi ở vị trí bìa (trừ góc) thì có 3 người xung quanh. Trường hợp 3: Người ngồi ở các vị trí còn lại có 4 người xung quanh.

Trường hợp 1                                   Trường hợp 2                                                          Trường hợp 3

Ô gạch sọc chỉ vị trí xung quanh của vị trí được tô đen.

Bạn hãy giúp ban tổ chức xác định số lượng điện thoại cần phải chuẩn bị để trao cho những người may mắn.

Dữ liệu vào: Đọc từ file LUCKY.INP gồm:

  • Dòng 1: gồm hai số nguyên dương theo thứ tự m, n (0 < m, n <103), giữa m và n được cách nhau bởi dấu cách.
  • m dòng tiếp theo, mỗi dòng gồm n số nguyên dương có giá trị không quá 109, giữa hai số cách nhau bởi một dấu cách.

Kết quả: Ghi ra file LUCKY.OUT gồm một số nguyên là số điện thoại ban tổ chức cần chuẩn bị.

Ví dụ:

LUCKY.INPLUCKY.OUT
3 43
1 4 3 1
1 1 5 2
2 1 2 1

Giải thích:

Số lượng điện thoại cần chuẩn bị là 3, vì có ba người may mắn:

+ Người thứ nhất ngồi ở hàng 1, cột 2, có số phiếu là 4 (có 3 người xung quanh) + Người thứ hai ngồi ở hàng 2, cột 3, có số phiếu là 5 (có 4 người xung quanh) + Người thứ ba ngồi ở hàng 3, cột 1, có số phiếu là 2 (có 2 người xung quanh)

Bài 4: (4 điểm) Tam giác   Tên chương trình: TRIANGLE.*

Alice có n que tính, mỗi que có độ dài là một số nguyên dương. Alice muốn tạo ra các tam giác bằng cách ghép ba que tính lại với nhau, độ dài mỗi cạnh là một que tính.

Em hãy giúp Alice đếm xem có bao nhiêu tam giác được tạo thành từ các que tính này và cho biết diện tích lớn nhất trong các diện tích của các tam giác ghép được là bao nhiêu?

Biết rằng:

+ Hai tam giác được gọi là khác nhau nếu có ít nhất một que tính khác nhau.

+ Ta có thể tính diện tích tam giác theo công thức sau :

s=Vp * (p — à) * (p — b) * (p — c)

Trong đó a,b,c là độ dài 3 cạnh của tam giác, và p là nửa chu vi của tam giác.

Dữ liệu vào: Đọc từ file TRIANGLE.INP gồm:

  • Dòng 1: gồm một số nguyên dương n (3 < n < 100)
  • Dòng 2: gồm n số nguyên dương a[1], a[2], …, a[n] là độ dài của n que tính (1 < a[i] < 106 1<i<n). Giữa các số được cách nhau bởi một khoảng trắng.

Kết quả: Ghi ra file TRIANGLE.OUT gồm:

  • Dòng 1: Ghi số lượng tam giác có thể ghép được.
  • Dòng 2: Ghi một số thực là diện tích lớn nhất của tam giác, kết quả làm tròn đến 2 chữ số ở phần thập phân. Trường hợp không có tam giác nào thì dòng này ghi -1.
TRIANGLE.INPTRIANGLE.OUTGiải thích
53Có 3 tam giác được tạo từ 5 que tính trên:
1 4 5 2 36.00Tam giác 1: Que thứ 2, 3, 4 Tam giác 2: Que thứ 2, 3, 5 Tam giác 3: Que thứ 2, 4, 5 Trong đó tam giác thứ 2 có 3 độ dài là 4 5 3 có có diện tích lớn nhất là 6.00
44Có 4 tam giác được tạo từ 4 que tính trên:
2 2 2 21.73Tam giác 1: Que thứ 1, 2, 3

Tam giác 2: Que thứ 1, 2, 4

Tam giác 3: Que thứ 1, 3, 4

Tam giác 4: Que thứ 2, 3, 4

Trong đó 4 tam giác đều có cùng diện

tích là: 1.73

30Không ghép được tam giác nào
1 2 3-1

Bài 5: (4 điểm) Hàng hóa Tên chương trình: GOOD.*

Cửa hàng tạp hóa XYZ cần chở n kiện hàng giao cho khách. Kiện hàng thứ i có trọng lượng là a[i] tấn. Cửa hàng có một xe tải có trọng tải là m tấn. Trong

chuyến hàng đầu tiên, cửa hàng muốn chở những kiện hàng đi giao thỏa mãn các yêu cầu sau:

  • Yêu cầu 1: Ưu tiên kiện hàng có trọng lượng lớn hơn sẽ được chở đi.
  • Yêu cầu 2: Xe còn đủ trọng tải chở được thì chọn tiếp kiện hàng khác thỏa mãn yêu cầu 1.

Em hãy lập trình giúp cửa hàng xác định trọng lượng các kiện hàng của chuyến xe đầu tiên.

Dữ liệu vào: Đọc từ file GOOD.INP gồm hai dòng:

  • Dòng 1: gồm số nguyên dương n (1 <n<103) là số kiện hàng và số nguyên dương m (0 < m < 109) là trọng lượng của xe tải. Giữa n và m được cách nhau bởi dấu cách.
  • Dòng 2: gồm n số nguyên dương a[i] (0 < a[i] <109, a[i] < m, 1<i<n) thể hiện trọng lượng của kiện hàng thứ i. Giữa các số được cách nhau bởi dấu cách.

Kết quả: Ghi ra file GOOD.OUT các số nguyên dương là trọng lượng của các kiện hàng trong chuyến xe đầu tiên theo trọng lượng giảm dần.

GOOD.INPGOOD.OUT
5 10

7 5 1 3 8

8 1
5 12

2 8 2 4 1

8 4

 

 

Giải thích bộ test 1:

Có n = 5 kiện hàng và xe có trọng tải m = 10 tấn Các kiện hàng có trọng lượng lần lượt là: 7 5 1 3 8 Vậy các kiện hàng được chở đi trong chuyến đầu tiên có trọng lượng lần lượt là 8 và 1.

Vì kiện hàng có trọng lượng là 8 lớn hơn trọng lượng các kiện hàng còn lại và 8 < m=10 nên được ưu tiên chọn. Trọng tải xe còn có thể chứa được là 10 – 8 = 2, nên chọn tiếp kiện hàng có trọng lượng là 1.

………………………………………………….. HẾT…………………………………………………..

Thí sinh không được sử dụng tài liệu. Giám thị không giải thích gì thêm.

Họ và tên thí sinh: ……………………………………………………………………………….. Số báo danh:……………………………………………………………………..

PDF Loading...

Đáp Án 5 bài Đề Thi Học Sinh Giỏi Tin học THCS cấp Tỉnh Tiền Giang

Đáp án bài 1: Tương đồng (SAME)

Ý tưởng tối ưu

  • Sử dụng dictionary (hash map) để đếm số lần xuất hiện của mỗi số (O(n)).
  • Duyệt qua dictionary để tìm giá trị xuất hiện nhiều nhất (O(n)).

Code Python

 

def tim_so_pho_bien_nhat(n, danh_sach):
    tan_suat = {}  # Tạo một dictionary để đếm số lần xuất hiện
    for so in danh_sach:
        tan_suat[so] = tan_suat.get(so, 0) + 1  # Tăng đếm số lần xuất hiện
    
    return max(tan_suat, key=tan_suat.get)  # Trả về số xuất hiện nhiều nhất

# Đọc input
n = int(input())  
danh_sach = list(map(int, input().split()))

# Xuất kết quả
print(tim_so_pho_bien_nhat(n, danh_sach))

 

Tối ưu: Sử dụng dictionary giúp truy xuất nhanh (O(1) mỗi lần cập nhật).
Độ phức tạp: O(n).


Đáp án bài 2: Tách xâu (STRING)

Ý tưởng tối ưu

  • Duyệt chuỗi để tách chữ và số (O(n)).
  • Đảo ngược danh sách chữ (O(n)).
  • Sắp xếp danh sách số (O(n log n)).
  • Ghép lại thành chuỗi (O(n)).

Code Python

 

def tach_xau(s):
    chu = []
    so = []
    
    for c in s:
        if c.isdigit():
            so.append(int(c))  # Thêm vào danh sách số
        else:
            chu.append(c)  # Thêm vào danh sách chữ
    
    chu.reverse()  # Đảo ngược chữ
    so.sort()  # Sắp xếp số
    
    return ''.join(chu) + ''.join(map(str, so))

# Đọc input
s = input()
print(tach_xau(s))

 

Tối ưu: Tách chữ và số trong 1 lần duyệt giúp tiết kiệm thời gian.
Độ phức tạp: O(n log n) do sắp xếp số.


Đáp án bài 3: May mắn (LUCKY)

Ý tưởng tối ưu

  • Duyệt từng phần tử của ma trận (O(m × n)).
  • Kiểm tra 8 ô xung quanh bằng danh sách dx, dy (O(1) mỗi lần kiểm tra).

Code Python

def dem_so_may_man(m, n, ma_tran):
    dx = [-1, -1, -1, 0, 0, 1, 1, 1]
    dy = [-1, 0, 1, -1, 1, -1, 0, 1]
    
    dem = 0
    for i in range(m):
        for j in range(n):
            tong = 0
            dem_lan_can = 0
            
            for k in range(8):  # Kiểm tra 8 ô xung quanh
                x, y = i + dx[k], j + dy[k]
                if 0 <= x < m and 0 <= y < n:
                    tong += ma_tran[x][y]
                    dem_lan_can += 1
            
            if dem_lan_can > 0 and ma_tran[i][j] > tong / dem_lan_can:
                dem += 1
    
    return dem

# Đọc input
m, n = map(int, input().split())
ma_tran = [list(map(int, input().split())) for _ in range(m)]

# Xuất kết quả
print(dem_so_may_man(m, n, ma_tran))

Tối ưu: Sử dụng dx, dy để kiểm tra 8 hướng nhanh chóng.
Độ phức tạp: O(m × n).


Đáp án bài 4: Tam giác lớn nhất (TRIANGLE)

Ý tưởng tối ưu

  • Sắp xếp trước (O(n log n)).
  • Dùng hai con trỏ để tìm bộ ba thỏa mãn (O(n²)).

Code Python

import math

def dien_tich_heron(a, b, c):
    s = (a + b + c) / 2
    return math.sqrt(s * (s - a) * (s - b) * (s - c))

def tam_giac_lon_nhat(n, canh):
    canh.sort(reverse=True)  # Sắp xếp giảm dần
    for i in range(n - 2):
        if canh[i] < canh[i + 1] + canh[i + 2]:  # Điều kiện tam giác
            return dien_tich_heron(canh[i], canh[i + 1], canh[i + 2])
    
    return 0  # Không tìm được tam giác hợp lệ

# Đọc input
n = int(input())
canh = list(map(int, input().split()))

# Xuất kết quả
print(f"{tam_giac_lon_nhat(n, canh):.2f}")

 
Độ phức tạp: O(n²).


Đáp án bài 5: Chở hàng (GOOD)

Ý tưởng tối ưu

  • Sắp xếp kiện hàng (O(n log n)).
  • Duyệt danh sách để chọn kiện hàng (O(n)).

Code Python

 

import sys
sys.stdin = open("GOOD.INP", "r")
sys.stdout = open("GOOD.OUT", "w")

# Doc so kien hang n va tai trong m
n, m = map(int, sys.stdin.readline().split())

# Doc danh sach trong luong cac kien hang
trong_luong = list(map(int, sys.stdin.readline().split()))

# Sap xep danh sach kien hang theo thu tu tang dan
trong_luong.sort()
trong_luong=trong_luong[::-1]

chon = []  # Danh sach cac kien hang duoc chon
tong_trong_luong = 0  # Tong trong luong cac kien hang duoc chon

# Duyet qua tung kien hang theo thu tu tang dan
for w in trong_luong:
    if tong_trong_luong + w <= m:  # Neu them kien hang vao van khong vuot tai trong
        chon.append(w)
        tong_trong_luong += w
    elif tong_trong_luong>m:
        break  # Neu qua tai thi dung

# Ghi ket qua ra file theo thu tu giam dan
print(*chon)

 

Tối ưu: Dùng sắp xếp + duyệt tuyến tính, tránh thử mọi khả năng (O(2ⁿ)).
Độ phức tạp: O(n log n).


Tóm tắt tối ưu

Bài toánTối ưu chínhĐộ phức tạp
SAMEHash map (dictionary)O(n)
STRINGDuyệt + sắp xếpO(n log n)
LUCKYDuyệt + kiểm tra nhanhO(m × n)
TRIANGLESắp xếp + hai con trỏO(n²)
GOODSắp xếp + duyệt tuyến tínhO(n log n)

Nhận xét:

  • Các bài O(n log n) chạy tốt cho n ≤ 10⁶.
  • Bài tam giác O(n²) cần tối ưu hơn nếu n > 10⁵.
  • Tránh thuật toán O(n³) nếu có thể.

Tất cả bài đều chạy tốt với dữ liệu lớn, trừ bài tam giác có thể cần cải tiến hơn nữa.

Nếu bạn thấy hay ! xin bạn 1 phút ! vui lòng đánh giá 5 sao cho trang website của chúng tôi ! để có động lực làm thêm nhiều bài hay nữa ! cảm ơn quý khách nhé !

Khóa học Python online từ cơ bản đến nâng cao

 

Khóa học Python online từ cơ bản đến nâng cao

20 Bộ Đề thi học sinh giỏi Tin Học Tỉnh Tiền Giang có đáp án 2025

Phần 1: Các bài tập dễ và cơ bản làm được các bài này các bạn sẽ được hiểu hơn về python:

  1. Bài 1: Tính Chu Vi Và Diện Tích Hình Vuông Bằng Python mới nhất
  2. Bài 2: Học Python – Tính Chu Vi Và Diện Tích Hình Tròn Bằng Python
  3. Bài 3: Học Python – Tính Chu Vi Và Diện Tích Hình Chữ Nhật Bằng Python
  4. Bài 4: Học Python – Tính Tổng Và Tích Hai Số Nguyên Bằng Python
  5. Bài 5: Học Python – Tính Trung Bình Cộng Của 3 Số Nguyên Bằng Python
  6. Bài 6: Học Python – Tính Chu Vi Và Diện Tích Tam Giác Bằng Python
  7. Bài 7: Học Python Tính Bán Kính R của Đường Tròn Ngoại Tiếp Tam Giác bằng Python
  8. Bài 8  : Học Python – Tính Diện Tích Tam Giác bằng Python
  9. Bài 9 : Tính Điểm Trung Bình bằng Python
  10. Bài 10: Học Python – Chia Táo bằng Python

SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH TIỀN GIANG                                                              TRUNG HỌC cơ SỞ

Năm học 2012-2013 Môn: TIN HỌC

Thời gian: 150 phút (không kể thời gian giao đề) Ngày thi: 27/3/2013 (Đề thi có 02 trang, gồm 05 bài)

Hãy ỉập trình giải các bài toán sau:

Bài 1: Chuyển đổi thang đo (5 điểm)               Tên chương trình: DOI.PAS

Một nhà khoa học có ba loại nhiệt kế sử dụng các thang đo nhiệt độ khác nhau: một chỉ độ Celsius (C), một chỉ độ Fahrenheit (F) và một chỉ độ Kelvin (K). Trong thí nghiệm của mình, ông đã sử dụng cả ba loại nhiệt kế và ông cần một máy tính để nhanh chóng chuyển đổi giữa các loại này. Biết công thức chuyển đổi là:

F = –C + 32
5

K = c + 273.15

Yêu cầu: Đọc vào số đo và đơn vị đo nhiệt độ, hãy chuyển đổi sang các đơn vị đo còn lại.

Dữ liệu: Vào từ file văn bản DOI.INP gồm 1 dòng chứa số thực (biểu diễn số đo nhiệt độ) và đơn vị đo nhiệt độ cần chuyển (là một trong các chữ cái F, c, K). Các số này cách nhau bởi dấu cách.

Kết quả: Ghi ra file văn bản DOI.OUT gồm 3 dòng chứa các thông tin theo thứ tự: Nhiệt độ F, Nhiệt độ c, Nhiệt độ K.

DOI.INPDOI.OUT
20 cNhiet do F Nhiet do c Nhiet do K68

20

293.15

 

Bài 2: Đếm số 0 (3 điểm)                                   Tên chương trình: ZERO.PAS

Tìm độ dài xâu con dài nhất chứa các số 0 liên tiếp trong 1 xâu cho trước.

Dữ liệu: Vào từ file văn bản ZERO.INP gồm 1 dòng chứa xâu chỉ gồm các kí tự 0 và 1 (không cách nhau bởi dấu cách). Độ dài xâu không quá 100.

Kết quả: Ghi ra file văn bản ZERO.OƯT chứa độ dài xâu con dài nhất chứa các số 0 liên tiếp.

ZERO.INPZERO.OUT
001011100001104

 

Bài 3: Xóa kí tự (5 điểm)                                   Tên chương trình: XOAKT.PAS

Viết chương trình xóa kí tự thứ n của xâu s cho trước. Các kí tự trong xâu s được đánh số thứ tự từ 1, từ trái sang phải.

Dữ liệu: Vào từ file văn bản XOAKT.INP chứa 1 dòng theo thứ tự gồm 1 số nguyên N, dấu cách, xâu s chỉ chứa các kí tự ‘a\.’z’, ‘A\.’Z\ số N không vượt quá độ dài của xâu s đã cho. Độ dài của xâu s không vượt quá 80.

Bài 4: Tìm số âm (5 điểm)                                    Tên chương trìnhỉ SOAM.PAS

Tìm vị trí của số nguyên âm lớn nhất trong dãy số nguyên cho trước. Nếu tìm được nhiều hơn 2 vị trí thì chỉ ra vị trí đầu tiên xuất hiện (dãy số nguyên được đánh số bất đầu từ 1).

Dữ liệu: Vào từ file văn bản SOAM.INP gồm:

  • dòng thứ nhất chứa số nguyên n – số lượng phần tử có trong dãy.
  • dòng thứ hai chứa n số nguyên của dãy (các số trên cùng 1 dòng cách nhau bởi dấu cách)

Kết quả: Ghi ra file văn bản SOAM.OUT chứa vị trí của số nguyên âm lớn nhất trong dãy, nếu không tìm dược thì ghi -1.________________________________________ ________________________________________

Bài 5: Dãy số (2 điểm)                                                      Tên chương trình: DAYSO.PAS

Số nguyên f được gọi là ước số (dương) của số nguyên d nếu f lớn hơn 0 và tồn tại số nguyên n sao cho f X n = d. Ví dụ, số 12 là ước số của 60 vì 12 X 5 = 60.

Dãy số nguyên Xi, X2, …, Xn được gọi là dãy DDF nếu:

  • Mỗi Xi đều là số nguyên dương.
  • X1>1.
  • Xi+1 (với i > 1) là tổng các chữ số của tất cả các ước số (dương) của Xi.

Ví dụ

Dãy số 17, 9, 13, 5, 6, … là dãy DDF được hình thành theo cách sau:

  • Ước số (dương) của 17 là 1 và 17; tổng các chữ số là 1 + 1 + 7 = 9.
  • Ước số (dương) của 9 là 1, 3 và 9; tổng các chữ số là 1+3 + 9 = 13.
  • Ước số (dương) của 13 là 1 và 13; tổng các chữ số là 1 + 1 + 3 = 5.
  • Ước số (dương) của 5 là 1 và 5; tổng các chữ số là 1 + 5 = 6.

Biết rằng, với dãy số DDF bắt đầu bằng XI thì đến một lúc nào đó sẽ tồn tại Xn sao cho Xj = Xn, với mọi j>n. số Xn sẽ được gọi là so hạng cuối của dãy.

Yêu cầu: Xác định chiều dài của dãy DDF với số hạng đầu cho trước. Chiều dài của dãy DDF là giá trị của n, với Xn là giá trị cuối của dãy.

Dữ liệu: Vào từ file văn bản DAYSO.INP gồm 1 dòng chứa số hạng đầu XI (xi < 2000).

Kết quả: Ghi ra file văn bản DAYSO.OƯT chứa chiều dãi của dãy DDF.

———— hết——————

  • Các tập tin chương trình phải đặt theo đúng quy định (cả phần tên và phần mở rộng).
  • Thí sình không được sử dụng tài liệu.
  • Giám thị không giải thích gì thêm.

 

SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI CHỌN HỌC SINH GIỎI CÁP TỈNH TIỀN GIANG           TRƯNG HỌC cơ SỞ

Năm học 2014-2015 Môn: TIN HỌC

Thời gian: 150 phút (không kể thời gian giao đề) Ngày thi: 25/3/2015 (Đề thi có 03 trang, gồm 05 bài)

Hãy lập trình giải các bài toán sau:

Bài 1: Tìm từ (5 điểm)                                        Tên chương trình: ỊVORD.PAS

Cho trước một xâu kí tự. Một từ được định nghĩa là một xâu con liên tiếp chứa các chữ cái (,al,zl hoặc ‘A’..’Z’). Một từ có thế được giới hạn giữa các dấu cách hoặc chấm câu. Dấu chấm câu là một trong các kí tự sau: dấu chấm (.), dấu phẩy (,), dấu chấm phẩy (;), dấu chấm than (!) hoặc dấu chấm hỏi (?).

Yêu cầu: Hãy tìm tất cả các từ có trong xâu mà có kí tự bắt đầu và kí tự kết thúc giống nhau (có phân biệt giữa chữ in hoa và chữ in thường).

Dữ liệu: Vào từ file văn bản WORD.INP chứa xâu kí tự gồm các chữ cái (‘a’…^’ hoặc ‘A’..’Z’), dấu cách, hoặc dấu chấm câu. Độ dài xâu không quá 100 kí tự.

Kết quả: Ghi ra file văn bản WORD.OƯT danh sách các từ mà có kí tự bắt đầu và kí tự kết thúc giống nhau, mỗi từ trên 1 dòng. Nếu không tìm thấy thì ghi -1.

WORD.INPWORD.OUT
dawd
Jun dawd gog, vex symphs.gog
symphs
Bài 2: Số thử tự (5 điểm)                                      Tên chương trình: INDEX.PAS

 

 

Một file văn bản chứa thông tin về học sinh của một lớp học gồm số thứ tự của học sinh và theo sau là tên của học sinh đó. Do lóp vừa nhận thêm một học sinh chuyển đến và giáo viên chủ nhiệm xếp học sinh này vào đầu danh sách nên cần đánh lại số thứ tự của các học sinh trong danh sách lóp.

Yêu cầu: Đánh lại số thứ tự của tất cả học sinh có trong danh sách bằng cách tăng số thứ tự của mỗi học sinh lên 1 đơn vị và giữ nguyên danh sách theo trật tự ban đầuT

Dữ liệu: Vào từ file văn bản INDEX.INP gồm:

  • Dòng đầu tiên chứa số nguyên N (1 < N < 100).
  • Mỗi dòng trong N dòng tiếp theo chứa thông tin của một học sinh theo thứ tự gồm: số thứ tự (số nguyên từ 1 đến 10000), dấu cách, tên của học sinh (không quá 20 kí tự).

Kết quả: Ghi ra file văn bản INDEX.OƯT danh sách học sinh nhu định dạng ban đầu nhung đã tăng số thứ tự của mỗi học sinh lên 1 đơn vị.

INDEX.INPINDEX.OUT
22
14 Nam15 Nam
42 Thanh43 Thanh

 

Bài 3: Dãy Min-Max (5 điểm)                           Tên chương trình: MINMAX.PAS

Cho trước dãy s chứa các số nguyên, vị trí các phần tử được đánh số từ 1 trở đi và từ trái sang phải.

Yêu cầu: Hãy tìm 2 dãy số nguyên dương, trong đó dãy số thứ nhất biểu diễn các vị trí trong s tại đó chứa số hạng nhỏ nhất của dãy s và dãy số thứ hai biếu diễn các vị trí trong s tại đó chứa số hạng lớn nhất của dãy s.

Dữ liệu: Vào từ file văn bản MINMAX.INP gồm :

  • Dòng đầu chứa số nguyên N – biểu diễn số lượng phần tử của dãy (1 < N < 40)
  • Dòng thứ hai chứa N số nguyên A[i] (-231 < A[i] < 231-1 với 1< i < N)

Kết quả: Ghi ra file văn bản MINMAX.OƯT lần lượt chứa 2 dòng:

  • Dòng thứ nhất chứa dãy số biểu diễn các vị trí trong s tại đó chứa số hạng nhỏ nhất của dãy s.
  • Dòng thứ hai chứa dãy số biểu diễn các vị trí trong s tại đó chứa số hạng lớn nhất của dãy s.

Các số trên cùng 1 dòng cách nhau bởi dấu cách.

MINMAX. INPMINMAX.OUT
73
3 6-146532 5

 

Bài 4: Số gốc (3 điểm)                                         Tên chương trình: ROOT.PAS

Cho trước số tư nhiên a có biểu diễn trong hê cơ số 10 là a = a a _H … an SỐ gốc của số tự nhiên a được xác định như sau:

  • Nếu a chỉ có 1 chữ số thì a cũng là số gốc, ngược lại thực hiện như sau:
  • Chọn ra 2 chữ số đầu tiên từ bên trái an và an-i.
  • Tính tổng s= an + an-i:

o Nếu s <10 thì thay 2 số vừa chọn trong biểu diễn của a bằng s. o Nếu s >10 thì thay 2 số vừa chọn trong biểu diễn của a bằng S-9.

  • Lặp lại quá trình trên cho đến khi a chỉ còn 1 chữ số.
  • Số tìm được bởi quy luật trên được gọi là số gốc.

Ví dụ: Tìm số gốc của số a= 87345691. Đầu tiên, cộng 2 số 8 và 7. Ta được số 15. Vì tổng tìm được lớn hơn 10 nên ta thay 2 số đầu của a bằng 15-9, khi đó a sẽ là 6345691. Tiếp tục, cộng 2 số 6 và 3 được 9, sau khi thay thế a sẽ là 945691. Cộng 2 số 9 và 4 được 13, sau khi thay thế a sẽ là 45691. Cộng 2 số 4 và 5 được 9, sau khi thay thế a sẽ là 9691. Cộng 2 số 9 và 6 được 15, sau khi thay thế a sẽ là 691. Cộng 2 số 6 và 9 được 15, sau khi thay thế a sẽ là 61. Cộng 2 số 6 và 1 được 7, sau khi thay thế a sẽ là 7. Sơ đồ thay thế như sau:

8+7=15^15-9=6->6+3=9->9+4=13^13-9=4->4+5=9->9+6=15^15-9=6^6+9=15^ 15-9=6^6+1=7 SỐ gốc tìm được là 7.

Yêu cầu: Viết chương trình xác định số gốc của số nguyên a cho trước.

Dữ liệu: Vào từ file văn bản ROOT.INP chứa số nguyên a (< maxlongint).

Kết quả: Ghi ra file văn bản ROOT.OƯT chứa số gốc của số nguyên a.

ROOT.INPROOT.OUT
873456917

 

Bài 5: Xâu SubsThree (2 điểm)                       Tên chương trình: SƯBSTH.PAS

Xâu con của xâu s được hiểu là một dãy các ký tự liên tiếp của s.

Xâu SubsThree của s là xâu con thỏa mãn:

  • Đó là xâu khác rỗng và chỉ chứa các chữ số ‘0’..’9’
  • Nếu chuyển xâu này sang số thập phân thì sẽ được số chia hết cho 3

Ví dụ, xâu “130a303” chứa 9 xâu Substhree như sau: ba xâu “3”, hai xâu “30”, hai xâu “0”, một xâu “303” và một xâu “03”. Xâu “30a3” không là xâu Substhree vì có chứa chữ cái, còn xâu “13” không xâu Substhree vì số 13 không chia hết cho 3.

Lưu ý rằng hai xâu Substhree được xem là khác nhau nếu chúng khác nhau về độ dài hoặc vị trí bắt đầu của chúng trong xâu s (mặc dù các kí tự của chúng giống nhau)

Yêu cầu: Cho trước xâu s, hãy đếm số lượng xâu Substhree chứa trong s.

Dữ liệu: Vào từ file văn bản SƯBSTH.INP chứa xâu khác rỗng s có tối đa 106 kí tự. Môi kí tự của s chỉ có thể là chữ số ‘0’..’9′ hoặc chữ in thường ‘aVy.

Kêt quả: Ghi ra fìle văn bản SƯBSTH.OƯT chứa nguyên biểu diễn số lượng xâu Substhree chứa trong s.

SUBSTH.INPSUBSTH.OUT
130a3039

 

————— hết————————-

  • Các tập tin chương trình phải đặt theo đủng quy định (cả phần tên và phần mở rộng).
  • Thí sinh không được sử dụng tài liệu.
  • Giảm thị không giải thích gì thêm.

20 Bộ Đề thi học sinh giỏi Tin Học Tỉnh Tiền Giang có đáp án 2025

SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH TIÈN GIANG        TRUNG HỌC co SỞ

Năm học 2013-2014 Môn: TIN HỌC

Thời gian: 150 phút (không kể thời gian giao đề) Ngày thi: 26/3/2014 (Đề thi có 03 trang, gồm 05 bài)

Hãy lập trình giải các bài toán sau:

Bài 1: Dãy Subtra (5,0 điểm)                             Tên chương trình: SUBTRA.PAS

Dãy số ti, t2,…tm được gọi là dãy Subtra nếu:

  • Mỗi phần tử ti (i=T..m) của dãy là một số nguyên lớn hơn hoặc bằng 0.
  • Mồi phần tử của dãy, bắt đầu từ phần tử thứ ba là hiệu của hai phần tử liền kề trước nó (tn+2=tn – tn-1 với t >1). Dãy sẽ kết thúc ở tm nếu tm-i<tm.

Ví dụ, nếu bắt đầu bằng hai số 120 và 71 thì dãy Subtra được phát sinh

như sau: 120; 71; 49; 22; 27. Dãy kết thúc ở số 27, độ dài của dãy là 5.

Yêu cầu: Đọc vào hai số ti và Í2, hãy tìm độ dài của dãy Subừa với hai sổ bắt đầu là ti và t2.

Dữ liệu: Vào từ fíle văn bản SƯBTRA.INP chứa hai số nguyên dương ti và t2, 0<Í2<ti< 10000, mỗi số nằm trên 1 dòng.

Kết quả: Ghi ra file văn bản SUBTRA.OƯT độ dài của dãy Subtra với hai số bắt đau là ti và t2-

SUBTRA.INPSUBTRA.OUT
120

71

5

 

Bài 2: Đọc văn bản (3,0 điểm)                                    Tên chương trình: ARAP.PAS

Tiếng Ả Rập, tiếng Ba Tư và tiếng Do Thái là các ngôn ngừ rất đặc biệt không giống như tiếng Anh và nhiều thứ tiếng khác, nó được viết từ phải sang trái. Tuy nhiên, những con số vẫn giừ nguyên (viêt từ trái sang phải). Ví dụ,

câu “manteiv fo tsaoc ffo deraeppasìd sregnessap 221 gniyrrac 777 gnieoB” sẽ được viết theo tiếng Anh là: “Boeing 777 carrying 221 passengers disappeared off coast of Vietnam

Yêu cầu: Chuyển xâu văn bản tiếng Ả Rập sang văn bản Tiếng Anh.

Dữ liệu: Vào từ file văn bản ARAP.INP chứa xâu văn bản theo tiếng Ả rập gồm các từ, mồi từ chứa các kí tự (a-z, A-Z, 0-9) ngăn cách nhau bởi dấu cách.

Kết quả: Ghi ra file văn bản ARAP.OUT chứa xâu văn bản theo tiếng Anh.

ARAP.INPARAP.OUT
manteiv fo tsaoc ffo deraeppasid sregnessap 227 gniyrrac 777 gnieoBBoeing 777 carrying 227 passengers disappeared off coast of Vietnam

 

Bài 3: Độ cao (5,0 điểm)                                Tên chương trình: HEIGHT.PAS

Bạn được giới thiệu một số địa điểm để tham quan. Mỗi địa điểm được giới thiệu bao gồm tên địa điểm và độ cao của nó.

Yêu cầu: Hãy xác định trong các địa điểm đã cho, một địa điểm có độ cao gần nhất với độ cao của bạn ưa thích.

Dữ liệu: Vào từ file văn bản HEIGHT.INP gồm:

  • dòng thứ nhất chứa số nguyên m – độ cao ưa thích của bạn.
  • Các dòng tiếp theo, mỗi dòng chứa các thông tin theo thứ tự sau: tên của một địa điểm, dấu cách, một số nguyên thể hiện độ cao của địa điểm đó.

Kết quả: Ghi ra file văn bản HEIGHT.OUT chứa tên địa điểm mà bạn chọn. Nếu có 2 địa điểm được chọn thỏa mãn yêu cầu đề ra, hãy in ra tên địa điểm có độ cao lớn hon.

HEIGHT.INPHEIGHT.OUT
5

Everest 8850 Kamet 7756 Bahamas 10 Maldives 0 Mariana -11521

Bahamas

 

Bài 4: Tính thời gian chênh lệch (5,0 điểm) Tên chương trình: TIME.PAS

Để xây dựng các công trình thủy lợi đôi khi cần phải khoan nổ mìn đào đá. Việc tính toán thời gian nổ phải thật chính xác để đảm bảo an toàn cho người lao động.

Yêu cầu: Biết thời điểm hiện tại và thời điểm sẽ xảy ra vụ nổ. Hãy xác định khoảng thời gian chênh lệch giữa 2 thời điểm nói ưên.

Dữ liệu: Vào từ file văn bản TIME.INP gồm:

  • dòng đầu tiên chứa thời điểm hiện tại ở dạng hh:mm:ss (giờ, phút, giây). Giờ (hh) là số nguyên từ 0 đến 23; phút (mm), giây (55) là các số nguyên từ 0 đến 59. Các giá trị hh, mm, ss được định dạng 2 chừ số.
  • dòng thứ hai chứa thời điểm sẽ xảy ra vụ nổ theo định dạng như trên. Kết quả: Ghi ra file văn bản OƯT chứa khoảng thời gian chênh lệch giừa 2 thời điểm theo định dạng như trên. Biết rằng thời gian chênh lệch ít nhất 1 giây và tối đa 24 giờ.
TIME.INPTIME.OUT
20:00:00

04:00:00

08:00:00
12:34:56

14:36:22

02:01:26
Bài 5: Số mát mẻ (2,0 điểm)                             Tên chương trình: COOL.PAS

 

 

Theo định nghĩa của một nhóm nghiên cứu Tin học, 0 là một chừ số mát mẻ. Họ gọi độ mát của một số là số lượng 0 trong biểu biễn thập phân của nó. Ví dụ: độ mát của số 100 là 2, độ mát của số 1 là 0.

Yêu cầu: Tìm tổng độ mát của các số từ 0 đến sổ nguyên N cho trước.

Dữ liệu: Vào từ file văn bản COOL.INP chứa số nguyên N (0< N < 10 000

000).

Kết qỊuả: Ghi ra fíle văn bản COOL.OUT chứa tổng độ mát của các số từ 0 đến sổ nguyên N.

COOL.INPCOOL.OUT
556

———– hét——————

•                Các tập tin chương trình phải đặt theo đúng quy định (cả phần tên và phần mở rộng).

•        Thí sinh không được sử dụng tài liệu.

•       Giám thị không giải thích gì thêm.

 

 

Cho trước số nguyên N. Hãy tìm số nguyên lớn nhất nhỏ han N sao cho tổng các chữ số của nó nhỏ hơn tổng các chữ số của số nguyên N một đơn vị.

Dữ liệu: Vào từ fíle văn bản NUMBER.INP chứa số nguyên N(1<N<100

000) ‘

Kết quả: Ghi ra file văn bản NUMBER.OƯT chứa số nguyên cần tìm.

NUMBER.INPNUMBER.OUT
15201510

 

Bài 3: Báo cáo tài chính (5 điểm)                            Tên chươiĩg trình: REPORTPAS

Nhân dịp tổng kết cuối năm, bạn được giao nhiệm vụ thống kê tổng số chi phí của từng nhân viên của một công ty sau các chuyến du lịch trong năm. Mỗi nhân viên phải nộp báo cáo chi phí cá nhân cho bạn sau mỗi chuyến đi.

Yêu cầu: Viết một chương trình đọc vào danh sách gồm tên từng người và chi phí của họ, sau đó tạo ra một danh sách được sắp xếp theo tên nhân viên, kèm theo tống số chi phí của mỗi cá nhân.

Dữ liệu: Vào từ file văn bản REPORT.INP có:

  • dòng đầu tiên chứa số nguyên n (1< n <100), số lần nộp bảo cáo của các nhân viên trong công ty.
  • n dòng tiếp theo mỗi dòng chứa 2 giá trị: tên người và chi phí tương ứng (là một số thực). Tên người và chi phí cách nhau bởi dấu cách. Lưu ý: tên người không phân biệt chữ in và chữ thường (ví dụ: Trung và tRung được xem là như nhau).

Kết quả: Ghi ra file văn bản REPORT.OUT chứa danh sách các nhân viên trong công ty kèm theo tổng chi phí của họ trong năm, trong đó tổng chi phí được làm tròn hai số lẻ. Danh sách cần được sắp xếp alphabet theo tên người. Tên người phải được viết hoa chữ cái đầu tiên, các chữ cái còn lại là chữ thường.

REPORT.INPREPORT.OUT
5

trung 450.55 binh 1034.56 trUNg 1000.00 daNn 530.00 danH 470.00

Binh 1034.56 Danh 1000.00 Trung 1450.55

 

Cho trước hai sổ nguyên N và D. Hãy tỉm N số nguyên dương X]…XN sao cho hiệu số giữa tích của chúng và tổng của chúng bằng với D.

Dữ liệu: Vào từ file văn bản SUMPRO.INP chứa hai số nguyên dương N (2<N< 1000) và D (0 <D < 1000).

Kết quả: Ghi ra file văn bản SUMPRO.OUT chứa N số nguyên dương thỏa mãn yêu cầu nói trên theo thứ tự không giảm. Lưu ý rằng các số tìm được có thể bằng nhau. Giá trị các số được in không vượt quá 1 o6.

Các số trên cùng 1 dòng cách nhau bởi dấu cách

SUMPRO.INPSUMPRO.OUT
3 512 8

 

Bài 5: Cân bằng bit (2,0 điểm)                                     Tên chương                                                                             trình:                                                                             BỈT.PAS

Đọc vào 2 xâu khác rỗng s và T có độ dài bằng nhau,                                                                                                        s                                                                                                  chứa các kí tự                                                                                                  ‘0’,

‘1’và ‘?\ còn T chỉ chứa các kí tự ‘0’ và ‘1\

Yêu cầu: Hãy chuyển đổi xâu s thành xâu T với số bước nhỏ nhất. Biết rằng môi bước có thế thực hiện một trong các thao tác sau:

  1. Thay đổi kí tự ‘0’ trong s thành ‘r.
  2. Thay đổi kí tự ‘?’ trong s thành ‘0’ hoặc ‘
  3. Hoán đối 2 kí tự bât kỳ trong xâu s.

Ví dụ: Với xâu s = ‘0?1?’ và T = ‘1001’. Ta có thể chuyển s thành T trong vòng 3 bước sau:

  • Bước 1: Hoán đổi S[l] và S[3]. s trở thành ‘1?0?’
  • Bước 2: Chuyển S[2] to ‘0’. s trở thành ‘100?’
  • Bước 3: Chuyển S[4] to ‘ r. s trở thành 41 oor

Dữ liệu: Vào từ file văn bản BIT.INP gồm 2 dòng chứa 2 xâu s và T, mỗi dòng có độ dài không quá 100.

Kết quả: Ghi ra fỉle văn bản BIT.OUT chứa số bước nhỏ nhất để chuyển đổi s thành T. Nếu không chuyển đổi được thì ghi số -1.

BIT.INPBIT.OUT
0?1?

1001

3

————- HẾT——————

•     Các tập tin chương trình phải đặt theo đúng quy định (cả phần tên và phần mở rộng).

•     Thỉ sình không được sử dụng tài liệu.

•     Giám thị không giải thích gì thêm.

 

 

Họ và tên thí sinh:…………………………………… số báo danh:……………………………………………………………

 

SỎ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI CHỌN HỌC SINH GIỎI CÁP TỈNH TIẺN GIANG         TRƯNG HỌC co SỎ

Năm học 2016-2017 Môn: TIN HỌC

Thời gian: 150 phút (không kể thời gian giao đề) Ngày thi : 22/3/2017 (Đe thi có 04 trang, gồm 05 bài)

Hãy lập trình giải các bài toán sau:

Bài 1: Giai thừa ngược (5 điểm)                                  Tên chưong trình: PINV.PAS

Trong toán học, n! (đọc là n giai thừa) được định nghĩa như sau:

n! =1x2x3x … X (n-1) X n (n là số nguyên không âm) Ví dụ:      3! = 1 X 2 X 3 = 6

Đặc biệt: với n = 0, người ta quy ước 0! = 1. Ký hiệun! được dùng lần đầu bởi Christian Kramp vào năm 1808.

Yêu càu: Biết trước giá trị của n!, hãy tìm sô nguyên n.

Dữ liệu: Vào từ file văn bản FINV.INP chứa giá trị của n!. Biết rằng số chữ số của n! không vượt quá 1 o6.

Kết quả: Ghi ra file văn bản FlNV.OƯT chua số tự nhiên n tìm được. Nêu không tìm được số nauvên n thì ghi -1.

FINV.INPFINV.OUT
362880010

 

Bài 2Í Chu kỳ dự đoán (5 điểm)                                  Tên chương trình: PẼRI.PAS

Ngày nay, có nhiều mô hình dự báo nhăm để biết trước những điều có thể xảy ra trong tương lai. Một mô hình thường dự báo, dự đoán giá trị của biến số (hoặc một dãy biến số) tại một số diêm trong tương lai căn cứ vào những dữ liệu trong quá khứ.

Dãy số nguyên ai. a2, …,an được gọi là dãy dự đoản chu kỳ k nếu tồn tại số nguycn dương k (IV k<n) sao cho mọi phần tử a; của dãy đều thỏa mãn a, a;+k với 1< i< n (nếu phần ai+k nằm ngoài dãy thì xem như nó nhận giá trị tùy chọn), số nguyên dương nhỏ nhất k thỏa mãn tính chất trên được gọi chu kỳ dự đoán của dãv số.

Một lập trình viên được đặt hàng viết chương trình phân tích chuỗi giá trị cho trước và cho biêt chuỗi này có khả năng tạo chu kỳ dự đoán k=3 hay không?

Yêu cầu: Đọc vào 1 dãy số nguvên và cho biết có là dãv dự đoán chu kỳ k=3 không?

Dữ liệu: Vào từ file văn bản PERI.INP

  • Dòng đầu chứa số nguyên n (3< n < 500).

 

  • Dòng thứ hai chứa n số nguyên aj (1< ai < 100). Các số này được cách nhau bởi dấu cách.

Ket quả: Ghi ra file văn bản PERI.OUT chứa chữ “YES” nếu dãy đã cho là dãy dự đoán chu kỳ k=3, ngược lại ghi chữ “NO”.

PERI.INPPERI.OUT
12

12 3′ 123123123

YES
11

123123 t 2312

YES
7

7 3 6 7 2 3 9

NO

 

Bài 3: Tên mã (4 điểm)                                                     Tên chương trình: CODE.PAS

Ngoài tên gọi chính, một hệ điều hành còn có tên phiên bản và tên mã (codename), tất cả đều được đặt theo một quy luật hay lý do nào đó. Ví dụ, hệ điều hành Android 4.4 có tên mã là KITKAT, Windows Phone có tên mã PHOTON, Fedora 14 có tên là LAƯGHLIN.

Tại Hội nghị triến lãm sản phẩm phần mềm, Ban Tổ chức quy định rằng tên mã đạt siải cao nhất là tên mã có số lượng chữ cái khác nhau nhiều nhất. Ví dụ: Tên mã K1TKAT có 4 chữ cái khác nhau: A, I, K và T; Tên mã JELLY BEAN có 7 chữ cái khác nhau A, B, E, J, L, N và Y; nên tên mã JELLY BEAN đạt giải cao nhất.

Ngoài ra cũng lưu ý rằng, nếu hai tên mã có cùng số chữ cái khác nhau thì tên mã nhỏ hơn sẽ đạt giải cao nhất. Biêt rằng phép so sánh hai tên mã được thực hiện theo quy tăc như sau:

+ Tên mã A gọi là nhỏ hơn tên mã B (B lớn hơn A) nếu như kí tự dầu tiên khác nhau giữa chúng kể từ trái sang phải trong tên mã A có mã ASCII nhỏ hơn.

+ Nếu A và B là các tên mã có độ dài khác nhau và A là đoạn đầu của B thì A là nhỏ hơn B.

Yêu cầu: Được biết danh sách liệt kê tên mã của các hệ điều hành, hãy xác định tên mã của hệ điều hành đạt giải cao nhất?

Dữ liệu: Vào từ fìle văn bản CODE.INP gồm:

  • Dòng đầu tiên chứa số nguyên n cho biết số lượng tên mã của các hệ điều hành (1 < n< 100).
  • Mỗi dòng trong n dòng tiếp theo chứa một tên mã của hệ điều hành (mỗi dòng chứa không quá 20 kí tự). Mỗi tên mã đều bắt đầu và kết thúc bằng chữ cái in hoa. Giả sử tên mã của một hệ điều hành gồm các chữ cái in hoa ‘A’..’Z’ và có thể chửa dấu cách ở giữa.

Ket quả: Ghi ra ílle văn bản CODE.OUT chứa tên mã đạt giải cao nhất.

CODE.INPCODE.OUT
3

OREO

KITKAT

 

 

SID

KĨTKAT _____________________

Bài 4: Xổ số điện toán (4 điểm)                            Tên chương trình: LOT.PAS

Người chơi tham gia được tự chọn n vé số để dự thưởng, mỗi vé số là một chuồi số gồm 6 bộ số phân biệt, mỗi bộ số là 1 số nguyên có 2 chữ số (có giá trị từ 01, 02,…,45).

trên.

Sau khi so từng vé số với chuỗi số kết quả quay thưởng của Ban Tổ chức công bô, người chơi sẽ biêt được có trúng thưởng hay không. Tổng sô tiền thưởng của người chơi là tống số tiền thưởng nhận được của từng vé số trúng thưởng.

Cơ cấu giải thưởng được xác định như sau:

  • Giải đặc biệt (trúng cả 6 bộ số) : 12 tỷ (đồng)
  • Giải nhất (trúng cả 5 bộ số) : 10 000 000 (dồng)
  • Giải nhì (trúng cả 4 bộ số) : 300 000 (đòng)
  • Giải ba (trúng cả 3 bộ số) : 30 000 (đồng)

Lưu ý:

  • Các bộ số của 1 vé số trùng với kết quả các bộ số của quay thưởng không cần theo thư tự.
  • Trong trường hợp một vé số trúng nhiều giải thưởng thì người trúng thưởng chỉ được lĩnh một giải thưởng cao nhất.
  • Nếu nhiều vé số trúng giải, trong đó có giải đặc biệt thì chỉ nhận giải đặc biệt Ợackpot).

22

thì người này sẽ trúng thưởng 60000 đồng Dữ liệu: Vào từ file văn bản LOT.INP gồm:

  • Dòng đầu tiên chứa chuỗi sổ kết quả quay thưởng.
  • Dòng thứ hai chứa số nguyên n (1 <n<100), số lượng tờ vé số của người chơi.
  • n dòng tiếp theo, mỗi dòng chứa thông tin của 1 vé số.

Các bộ số trong chuỗi số kết quả quay thưởng và trong 1 vé số cách nhau bởi dấu cách.

Ket quả: Ghi ra file văn bản LOT.OUT chứa tổng số tiền thưởng nhận được. Nếu không trúng thưởng thì ghi số 0. Neu trúng giải đặc biệt thì ghi ‘JACKPOT’.

LOT.INPLOT.OUT
03 02 07 41 36 22 560000

 

 

Bài 5: Số bội của 3 (2 điểm)

Hệ thông lưới điện có thê bị gây hại bởi nhiêu tác nhân, trong đo một nguy cơ tiềm ẩn làm cản trở hoạt động và làm hao mòn thiết bị nhưng ít người nhận biết được chính là sóng hài – mối nguy cơ tiềm ẩn được phát hiện ngay đầu thập niên 1890.

Sóng hài (harmonic) là dòng điện không mong muốn làm quá tải đường dây và biến áp, làm tăng nhiệt độ hệ thống (hoặc thậm chí gây hỏa hoạn) và gây nhiễu lên lưới điện. Sóng hài là các điện áp hay dòng điện hình sin có tần số là bội số của tần số công nghiệp (tần số cơ bản), do hiện diện của các tải phi tuyến trong lưới điện. Ví dụ dòng điện hài có tần số 150HZ trên lưới điện 50HZ là sóng hài bậc 3. Thường chỉ có sóng hài bậc lẻ 3, 5, 7, 9 là xuất hiện trong lưới điện 3 pha.

Với tần số của 1 dòng điện đã cho, cần tìm sóng hài bậc 3 có ảnh hưởng đối với tân số của dòng điện đã cho.

Yêu cầu: Cho trước tự nhiên n. Hãy thay đổi 1 chữ số của n để được số chia hết cho 3 và là số lớn nhất trong các so tìm được (kể cả trường hợp ban đâu n chia hết cho 3).

Dữ liệu: Vào từ file văn bản MUL3.INP chứa số tự nhiên n có tối đa 100 chữ số.

Kết quả: Ghi ra file văn bản MUL3.0UT chứa số tự nhiên tìm được theo yêu cầu trên.

MUL3.INPMUL3.OUT
123723
96
HÉT

 

 

  • Các tập tin chương trình phải đặt theo đủng quy định (cả phần tên và phần mở rộng).
  • Thỉ sinh không được sử dụng tài liệu.
  • Giám thị không giải thích gì thêm.

Họ và tên thí sinh:……………………………………………… số báo danh:……………………………………………………………….

 

KỲ THI CHỌN HỌC SINH GIỎI CÁP TỈNH TRUNG HỌC CO SỞ Năm học 2017-2018 Môn: TIN HỌC

Thời gian: 150 phút (khổng kể thời gian giao đề)

Ngày thi: 30/3/2018

(Đê thi có 03 trang, gồm 05 bài)

Hãy lập trình giải các hài toán sau:

Bài 1: Chỉ số BMR (5 điểm)                                          Tên chương trình: BMR.PAS

‘BM&Ợìasal Metabolic Rate) là chỉ số năng lượng cơ bản của cơ thể cho biết mức năng lượng tối thiểu mà cơ thế cần để duy trì các hoạt động bình thường.

  • Công thức tính chỉ số BMR:

Nừ giới: BMR = 655 + (9.6 X kg) -f (1.8 X cm) – (4.7 X tu ổi) Nam giới: BMR = 66 + (13.7 X kg) -h (5 X cm) –                                                                 (6.8 X tuồi)

  • Cách tính tống lượng calo cần hấp thụ theo từng múc độ hoạt động the chất
  • Nếu bạn quá ít hoạt động (ít hoặc không tập luyện): Caỉo = BMR X 1.2
  • Neu bạn ít hoạt động (ít tậu thể dục/thê thao 1-3 ngày/tuần): Calo = BMR X 375
  • Nếu bạn hoạt động vừa (tập thê dục/thế thao vừa vừa 3-5 ngày/tuần): Calo = 55
  • Nếu bạn hoạt động nhiều (tập thẻ dục/thề thao nhiều 6-7 ngày/tuần): Calo = BMR X 1.725
  • Nêu bạn hoạt động cường độ cao (tập thê dục/thê thao cường độ cao & cỏng việc thể chất hoặc tăng gấp đổi lượng luyện tập): Calo = BMR X 1.9

Yẽu cầu: Đọc vào thông tin của 1 người bao gồm giới tính, tuổi, chiều cao, cân nặng và mức độ hoạt động của người đó. hãy tính lượng calo cần thiết.

Dữ liệu: Vào từ file văn bản BMRHNP gồm 5 dòng:

  • Dòng 1: Chứa chữ “NAM’’ hoặc “NU”, cho biết giới tính của người đó.
  • Dỏng 2:Chứa số nguyên cho biết tuổi.
  • Dòng 3: Chứa số nguyên cho biết chiều cao (tính bằng cm).
  • Dòng 4: Chứa số nguyên cho biết cân nặng (tính bàng kg).
  • Dòng 5: Chứa 1 trong các ki tự “S”, “L”, “M”, “A”, “E”, cho biết mức độ hoạt động tương ứng như sau:

S: quá ít hoạt động (ít hoặc không tập luyện); L: ít hoạt động; M: hoạt động vừa; A: hoạt động nhiều; E: hoạt động cường độ cao.

Kết quả: Ghi ra file văn bản BMR.OUT chứa lượng calo cần thiết cho người đó. Kết quả là một số nguyên không lấy phán thập phân.

BMR.INPBMR. OUT
NAM1713
52
1 65
65
s

 

Bài 2: Số Emỉrp (5 điểm)                                                 Tên chương trình: EMỈRP.PAS

Số Emirp là một số nguyên tố mà khi đảo ngược vị trí các chữ số của nó, ta cũng được một số nguyên tố. Định nghĩa này không bao gồm các số nguyên tố xuôi ngược (đọc ngược hay xuôi cũng là số nguyên tố chính nó), như 151 hoặc 787) và không bao gồm các số nguyên tố có một 1 chữ số. Biêt rằng, số nguyên tố là số tự nhiên chỉ có hai ước sô dương phân biệt là 1 và chính nó.

Yêu cầu: Đọc vào số nguyên n, hãy cho biết n có là số Emirp không?

Dữ liệu: Vào từ file văn bản EM3RP.INP chứa số nguyên n (1< n < 10000).

Kết quả: Ghi ra file văn bản EMIRP.OUT chứa chứa chữ “YES” nếu n là số Emirp, ngược lại ghi chữ “NO”.

EMIRP . INPEMIRP.OUT
149YES

 

Bài 3: Số thân thiện (4 điểm)                                        Tên chương trình: FRIEND.PAS

Người ta gọi bộ 3 số nguyên dương là thăn thiện nếu chúng khác nhau đôi một và tích của hai trong số chúng chia hết cho số thứ ba.

Yêu cầu: Đọc vào hai số nguyên dương phân biệt, hãy đếm xcm có bao nhiêu số nguyên tạo với hai số dã cho thành bộ 3 số thăn thiện.

Dữ liệu: Vào từ file văn bản FRIEND.INP chứa 2 số nguyên dương phân biệt cách nhau bởi dấu cách, mỗi số có giá trị không vượt quá 40000.

Kết quả: Ghi ra file văn bản ERIEND.OUT chứa số lượng số nguyên tạo với hai số đã cho thành bộ 3 sô thân thiện.

FRIEND.INPFRIEND.OUT
5 15õ
Giải thích: Có đúng hơi số cùng với số 5 và số ỉ5 tạo thành bộ 3 thân thiện là số 3 (vì 3×5 chia hết cho 15, 3×15 chia hết cho 5 và 5 X 15 là chia hết cho 3) và số 75 (vì 5 X 15 chia hết cho 75, 5 x 75 chia hết cho 15 và 15 X 75 chia hết cho 5).

 

 

Bài 4: Giải mã Email (3 điểm)                               Tên chương trình: EMAIL.PAS

Một người dùng giấu một mật khẩu trong một email đâ gửi. Email đã gửi bao gồm một số dòng văn bản. Mỗi dòng chứa một số từ. Từ là dãy liên tiếp các chữ cái 6a\.’z\ Mật khẩu được thành lập bằng cách ghép theo thứ tự các từ lấy trong nội dung email đã gửi.

Mật khẩu được tìm thấy dựa theo quy luật sau:

 

  • Dòng thứ nhât củẩ ciriail không chứa mặt khẩu.
  • Dòng thử hai của email chứa từ đầu tiên của mật khẩu.
  • Dòng thứ ha của email chứa từ thứ hai của mật khẩu.
  • Dòng thử tư của email chứa từ thử ba của mật khẩu.

Và tiếp tục như thể…

Luu ý: Nếu trên một dòng nào của email khòng tìm được từ nào của mật khẩu theo quy luật trên thì lừ tìm được là rỗng và không đưa từ rỗng vào mật khẩu.

Dữ liệu: Vào từ file văn bản EMAIL.INP gồm:

  • Dòng đầu tiên chửa số dòng của email (email chứa không quá 50 dòng).
  • Các dòng tiếp theo chứa nội dung của Einail.

Kết quả: Ghi ra file văn bản EMAIL.OUT chứa mật khẩu tìm được theo quy luật trên. Mỗi từ cua mật khâu nằm trcn 1 dòng. Dữ liẹu vào đain bảo mật khẩu tìm được luôn khác rỗng.

EMAIL.INPEMAIL,OƯT
5toi
viet nam la quoc gia thuoc khu vuc dong nam adang
toi thay hoa vang tren co xanho
tet dang vao nhanga
tim nha o
bay chim thien nga
Bái 5: Dãy con (3 điểrii)                                      Tên chương trình: SƯBSEQ.PAS

 

 

Cho dãy A có n phần tử. mỗi phần tử là một số nguyên (có thể âm, bàng 0 hoặc dương). Hãy tim dãy con khác rỗng các phần tử liên tiép của A sao cho:

  • Phần tử đầu dãv con và cuối dãy con bằng nhau.
  • Tổng các phần tử của dãy con là lớn nhất.

Hay nói cách khúc: Tìm 2 số nguvên / và /• (1 <l<r<n) sao cho a/ = ar và tổng a/ + ÍU+I + • • • + ar là lớn nhất.

Dữ liệu: Vào từ file văn bản SUBSEQ.INP gồm:

  • Dòng thử nhất chứa số nguyên n (1 < n < 106) – số lượng phần tử cúa A.
  • Dòng thứ hai chứa n số nguyên aụ ãi,…, a„ (-109 < ai <109. 1 < i <n).

Kết quả: Ghi ra file văn bản SUBSEQ.OUT gồm:

  • Dòng thứ nhất chứa tổng lớn nhất tìm được.
  • Dòng thứ hai chứa hai số nguyên / và

Các số trên cùng một dòng cách nhau bởi dấu cách. Neu tìm được hơn 1 lời giải thì xuất ra bát kỳ một trong số chúng.

SƯBSEQ.INPSƯBSEQ.OƯT
55
12 12 32 4
…………… HÉT…………………..

•                Các tập tin chương trình phải đặt theo đúng quy định (cả phần tên và phần mở rộng).

•        Thí sinh không được sử dụng tài liệu.

•       Giám thị không giải thích gì thêm.

 

 

KỲ THI CHỌN HỌC SINH GIỎI CÁP TỈNH TRUNG HỌC CO SỞ Năm học 2018-2019 Môn: TIN HỌC

Thời gian: 1.50 phút (không kể thời gian giao đề)

Ngày thi: 20/3/2019

(Đề thi có 04 trang, gồm 05 bài)

TONG QUAN CÁC BÀI THI

Tên bàiFile chương trinhFile dữ liệu vàoFi!e kết quả
Bài 1Lễ hội Cà phôCAPE.*CAFE.INPCAFE.OUT
Bài 2Số ưa thíchHKE.*LIKE.INPLIKE.OUT
Bài 3Phuc hồi dãy sốSEỌ.*SEQ.INPSEQ.OŨT
Bài 4Số nguyên tố lớn nhấtPRIME.*PRIME.INPPRIME.OUT
Bài 5Dãy số điều hòaHARMONIC.*HARMONIC.INPHARMONIC.OUT

(Dấu * đưọc thay bỏi PAS hoặc CPP của ngôn ngũ’ lập trình đuọc sử dụng tuoìig ứng vỏ’i Pascal hoặc C++). Hãy lập trình giải các bài toán sau:

 

 

Bài 1: Lễ hội Cà phê (5 điểm)

Ban To chức Lễ hội Cà phê năm 2019 vạch ra một kế hoạch cho các sự kiện sẽ diễn ra trong Le hội. Mỗi sụ’ kiện được Ban Tổ chức dự kiến thời gian diễn ra bao gồm thời gian bắt đầu và thời gian kết thúc.

Yêu cầu: Căn cứ thông tin của Ban Tố chức, hãy xác định thời gian bắt đầu (thời gian bắt đầu của SỊT kiện sớm nhất) và kểt thúc (thòi gian kết thúc sự kiện cuối cùng) của Lề hội, tông thời lượng của các sự kiện (không bao gồm thời gian nghỉ) và tông thòi gian nghỉ.

Dữ liệu: Vào từ file văn bán CAFE.INP có:

  • Dòng đầu tiên chứa một số nguyên n – số lượng sự kiện (1 < n <20).
  • Dòng thứ i của n dòng tiếp theo chứa thông tin về các sự kiện bao gồm: Si là tên của sự kiện (bao gồm các chữ cái không quá 100 ký tự), thời gian bắt đầu của sự kiện là ai và thòi gian kết thúc bi. Thời gian được cho là hợp lệ và theo định dạng hh:mm (không có dấu cách ở giữa) và có giá trị từ 00:00 đên 23:59. Giữa Si và aị có thê có một hoặc nhiêu dâu cách, giữa ai và bi là dấu trừ (-). Mỗi sự kiện chi được tố chức tại một thòi điểm. Một sự kiện không the kéo dài dưới 1 phút.

Kết qua: Ghi ra file văn bản CAFE.OƯT chứa bổn dòng:

Dòng ĩ: Thời gian bắt đầu (thòi gian bắt đầu của sự kiện sớm nhất).

Dòng 2: Thời gian kết thúc (thời gian kết thúc sự kiện cuối cùng).

Dùng 3: Tổng thời lượng của các sự kiện (không bao gồm thời gian nghỉ). Dòng 4: Tống thời gian nghỉ.

Tất cả dữ liệu đầu ra theo định dạng hh:mm.

CAFE.INPCAFE.OUT
310 : 00
Opening 15:20-17:2017 : 20
Speech 10:00-11:0005 : 00
Festival 12:00-14:0002:20

 

Bài 2: Số ua thích (5 điểm)

Bình rất thích các số trong đó không có hai chữ số liên tiếp giống nhau.

Yêu cầu: Với một số nguyên n được cho, hãy giúp Bình tìm sổ nguyên nhỏ nhất, lớn han hon n, mà Bỉnh thích.

l)ữ liệu: Vào từ file văn bản LIKE.INP chứa số nguyên n (1 < n < 1018).

Kết quả: Ghi ra ílle văn bản L1KE.OUT chứa sô nguyên nhỏ nhất lớn hơn n, trong đó không có hai chừ sô liên tiếp giông nhau.

LIKE.INPLIKE.OUT
98101

 

Bài 3: Phục hồi dãy số (4 điểm)

Trong 1 tiết dạv toán, các học sinh đang được giới thiệu về các số nguyên dương. Đê chuân bị cho tiết học, giáo viên viết sẵn các số từ 1 đến n theo thứ tự tăng dần (từ trái sang phải) trên bảng.

Tuy nhiên, có một học sinh nghịch ngợm đã chạy vào lóp học và đã xóa đi một số đã đưọ’c giáo viên viết trên bảng. Đứng trước Hiệu trưởng, học sinh này xưng tên là Nam, học sinh này rất hối hận và nói rằng mình chỉ xóa đúng một số trong dãy số.

Yêu cầu: Hãy giúp giáo viên tìm hiểu xem điều này có đúng không, và nếu có thế, hãy cho biết số nào đã bị xóa.

Dfr liệu: Vào từ file vãn bản SEQ.INP gồm:

  • Dòng đầu tiên chứa số nguvên n – sô lượng số nguyên đã được giáo viên ghi trên bảng (2 < n < 1000).
  • Dòng thứ hai chứa số nguyên m – số lượng số nguyên còn lại trên bảng sau khi học sinh đã xóa (1 < m <1000).
  • Dòng thử ba chứa m số nguyên ai, a2, . . . , am — dãy số nguyên còn lại sau khi Nam đã xóa, theo đúng thứ tự mà chúng đã được ghi trên bảng (1 < ãị < 1000).

Kết quả: Ghi ra fde văn ban SEQ.OƯT theo định dạng sau:

  • Nếu lời giải thích của Nam là hợp lý:
  • Ghi chữ “Yes” dòng đầu tiên.
  • Dòng tiếp theo chứa số nguyên đã bị Nam xóa.
  • Nếu lời giải thích của Nam là không hợp lý: Ghi chữ “No”.
SEQ.INPSEQ.OUT
4Yes
32
13 4

 

Bài 4: Số nguyên tố ló’n nhất (4 điểm)

Một giáo viên Toán muốn kiếm tra kiến thức số học của học sinh lóp mình đang dạy bằng cách như sau: Đầu tiên Ồng giới thiệu với học sinh hai số tự nhiên a vàb. Sau đó yêu cầu học sinh hình thành các sô mới theo quy tăc:

  • Lấy chữ số đầu tiên của số a: Đặt thay cho chữ số đầu tiên của số b, tạo thành một số mới; Đặt thay cho chữ số cuối cùng của số b, tạo thành một số mới.
  • Lấy chữ số thứ hai của số a: Đặt thay cho chừ số đầu tiên của số b, tạo thành một số mới; Đặt thay cho chữ số cuối cùng của số b, tạo thành một số mới.

Tiếp tục tạo các số khác theo quy tắc trên cho đến hết chữ số cuối cùng của số a. (nếu số a có 3 chừ sổ thì sẽ có 6 sổ được tạo thành).

Yêu cầu: Biết hai số a và b, hãy tìm sổ nguyên tố lớn nhất trong các số được hình thành theo quy tắc trẻn (kể cả hai số ban đầu a và b). Neu không tìm được số nguyên tố lớn nhất như yêu cầu ở trên thì hiển thị số lớn nhất có thể (kể cả hai số ban đau a và b).

Dữ liệu: Vào từ fiỉe văn bủn PRIME.INP chứa hai số nguyên a vàb (10 < a, b

< ỉ000000).

Kết quả: Ghi ra tìle văn bản PRIME.OIT chứa số nguyên tìm được theo yêu cầu ở trên.

Ví dụ:

_____ *__________________________________________________ ______________________________________ _

Bài 5: Dãy số điểu hòa (2 điểm)

Trung bình điểu hòa là một trong ba trung bình Pythagoras, hai trung bình kia lả trung bình nhân và trung bình cộng (trong Excel có hàm HARMEAN trả về trung bình điều hòa của một tập hợp dữ liệu)

Ta nói rằng ba số a, b, c theo thứ tự tạo thành dãy số điểu hòa nêu b là trung bình điều hòa của a và c, nghĩa là:

2

a c

Yêu cầu: Biết trước số tụ nhiên b, hãy xác định tất cả các cặp số tự nhiên (a, c) sao cho a, b, c tạo thành dãy số điều hòa.

Dữ liệu: Vào từ file văn bản HARMONIC.INP in chứa một số tự nhiên b.

Kết quả: Ghi ra lìlc văn bản HARMONIC.OUT chứa ở dòng đẩu tiên một số tự nhiên n cho biết cho số cặp số tự nhiên (a, c) trong đó b là giá trị trung bình diều hòa. n dòng tiếp theo sẽ hiến thị các cặp số (a, c) tìm được (chúng cách nhau bởi một dấu cách).

Hạn chế và hru ỷ:

  • 1 < b < 10°;
  • Các cặp số trong file kêt quả có thê được hiến thị (heo bất kỳ thứ tự nào;
  • Neu b là trung bình điều hòa giữa hai số khác nhau a và c thì các cặp (a, c) và (c, a) được coi là lời giải riêng biệt.
HARMONIC.INPHARMONIC.OƯTGiải thich
33số 3 là trung bình điều
3 3hòa của số 3 và 3. Ta có
dãy số điều hòa (3, 3,
2 63)
6 2Số 3 là trung bình điều
hòa của số 2 và 6. Ta có
các các dãy số điều hòa
(2,3,6) và (6,3,2)
————- Hét ——————–

•                Các tập tin chuvng trình phải đặt theo đúng quy định (cả phần tên và phần mở rộng).

•       Thí sinh không được sử dụng tài liệu.

•       Giảm thị không giải thích gì thêm.

 

 

 

KỲ THI CHỌN HỌC SINH GIỎI CẢP TINH TRƯNG HỌC CO SỞ, NÃM HỌC 2020-2021

Môn: TIN HỌC

Thời gian: 150 phút (không kê thời gian giao để)

Ngày thi: 31/3/2021

(Đê thi có 04 trang, gồm 05 bài)

TỎNG QUAN CÁC BÀI THI

Tên bàiFi!e chuông trìnhFile dữ liệu

vào

File kết quả
Bài 1Số kết đôiNUM.*NUM.INPNUM.OUT
Bài 2World cupCUP.*CUP.INPCUP.OƯT
Bài 3Phần tư điên hìnhPART.*PART.1NPPART.OUT
Bài 4Đặt mật khẩuPW.*PW.INPPW.OUT
Bài 5Sự lây lanCOVID.*COV1D.INPCOVID.OUT

 

Dấu * được thay thế bời PAS, CPP hoặc PY cứa ngôn ngữ lập trình được sử dụng tương ứng là Pascal, C++ hoặc Python.

Bài 1: Số kết đôi (5.0 điểm)

Số nguyên dươna X được gọi là số kết đôi nếu như có thê tim thấy hai số nguyên a, b thoa mãn các điều kiện:

  • ì < a < b < X

, _        , a 1

  • X è = X và – > —

b 2

Yêu cầu: Hãy xác định một số nguyên cho trước có là số kết đôi hay không?

Dữ liệu: Vào từ file văn bản NUM.INP chứa số nguyên X (1 < X < 215).

Kết quả: Ghi ra file văn bản NUM.OƯT chứa số 1 nếu X là số kết đôi, ngược lại ghi số 0.

Bài 2: VVorld cup (5.0 điêm)

Liên đoàn Bóng đá Ọuốc tế (FIFA) đã ấn định ngày khai mạc World Cup 2022. Đội chủ nhà Qatar sẽ đá trận đầu tiên trong ngày khai mạc là ngày 21/11/2022.

Phương đang sống ờ Việt Nam, rất dam mê bóng đá và mong chờ được xem lễ khai mạc.

 

Yêu cầu: Hãy giúp Phương tính xem kể từ một mốc thời gian ngày, còn bao nhiêu ngày nữa là đến lễ khai mạc. Ví dụ, mốc thời gian là ngày hôm nay, nếu lễ khai mạc là ngày mai, thì sẽ còn 1 ngày nữa. Cho biết:

a) Số ngày trong 1 tháng:

Tháng123456789101112
Số ngày3128 (29 nếu là năm nhuận)31303130313130313031

b) Năm nhuận:

 

 

Năm nhuận là năm chia hết cho 400 hoặc chia hết cho 4 mà không chia hết cho 100. Ví dụ, năm 1800 không phải là năm nhuận; năm 2016, 2000 là năm nhuận.

Dữ liệu: Vào từ íile văn bản CUP.INP chứa 1 xâu cho biết mốc thời gian ngày cần tính theo định dạng “dd.mm.vyyy”. Trong đó dd là ngày có giá trị từ 01 đến 31, nim là tháng có giá trị từ 01 đến 12, yyyy là năm có 4 chữ số. Dừ liệu ngày cho là hợp lệ. Kết quả: Ghi ra tìle văn bản CƯP.OUT chứa số ngày sẽ đến lễ khai mạc FIFA World Cup 2022.

Bài 3: Phần tử điển hình (4.0 điềm)

Cho trước một mảng có n phần tử A = [ai, a2,…, an]. Phần tử a, được gọi là điển hình nếu tồn tại một cặp chí số L và R (1 < L < R < n) sao cho aj = aL + aL+i +…+ aR. Nói cách khác, một phần tử được gọi là điển hình nếu nó có thể được biếu diễn dưới dạng tông của hai hoặc nhiều hơn các phần tử liên tiếp của một mảng.

Yêu cầu: Đem số phần tử điển hình cua mảng đã cho A.

Ví dụ, nếu n = 9 và A = [3, 1,4, 1, 5, 9, 2, 6, 5] thì số phần tứ điển hình của A là 5, cụ thê:

  • a3 = 4 là phần tử điển hình, vì a3 = 4 = ãị + a2 = 3 + 1;
  • a5 = 5 là phần tử điển hình, vì a5 = 5 = a2 + a3 = 1 + 4;
  • a6 = 9 là phần tử điển hình, vì a6 = 9 = ai + a2 + a3 + a4 = 3 +   1 + 4 + 1;
  • a8 = 6 là phân tử điển hình, vì a8 = 6 = a2 + a3 + a4 = 1 + 4 +     1;
  • ãg – 5là phần tử điên hình,vì ay = 5 = a2 + a3 = 1 +

Lun ý rằng các phần tử của mảng A có thế bằng nhau nên nếu có một số phần tử điển hình mà bằng nhau thì tất cả chúng sẽ được đếm.

Dữ liệu: Vào từ íìle văn bản PART.INP gồm:

  • Dòng đầu tiên chứa số nguyên n là số phần tử của mảng A (1 < n < 8000).
  • Dòng thứ hai chứa n số nguyên cách nhau bởi dấu cách ax, a2,…, an

(1 < al < n).

Kết quả: Ghi ra file văn ban PART.OUT chứa số phần tử điển hình cua mang đã cho.

PART.INPPART.OUT
9

314159265

5

 

Bài 4: Đặt mật khấu (4.0 điểm)

Quên mật khẩu Facebook, Gmail, Zalo… là việc thuờng xảy ra khi chúng ta phải đàng nhập rất nhiều tài khoản hằng ngày. Bên cạnh việc tạo mật khẩu mạnh là việc làm thế nào mà bạn có thế nhớ nhùng mật khâu đã tạo. Một người dùng internet nghĩ ra cách tạo một mật khấu mới như sau: Mật khẩu mới là mật khâu chỉ khác các mật khẩu mà anh ta đã có (tạo ra hoặc được cung cấp) nhiều nhất 1 vị trí.

Yêu cầu: Với n xâu s 1 ,s2,- – •, Sn cho trước, các xâu đêu có cùng độ dài m. Hãy tạo xâu mật khấu mới p sao cho mỗi xâu tronc sô n xâu đã cho khác xâu p không hơn một vị trí. Hay nói cách khác, với mồi xâu Si không có hơn 1 vị trí j sao cho Sj[j] V

PDL

Lưu ý: Xâu p mong muốn có thê bằng một trong các xâu Si đã cho, hoặc nó có thể khác với tất cả các xâu Si đã cho.

Dữ liệu: Vào từ file văn bản PW.INP gồm:

  • Dòng đầu tiên chứa hai số nguyên nvàra (n: số xâu; m: độ dài mỗi xâu; 1 < n, m < 10).
  • Dòng thứ i trong n dòng tiếp theo chứa xâu Si, có độ dài m và chi chứa các chữ cái in thường (‘a’..‘z’).

Kết quả: Ghi ra file văn bản PVV.OƯT

  • Nếu bài toán có lời giải: Ghi xâu p có độ dài m và chỉ chứa các chữ cái in thường (‘a’..‘z’). Nếu bài toán có nhiều lời giải: Ghi bất kỳ xâu p nào thỏa mãn.
  • Nếu bài toán không có lời giai: Ghi số -1.
PW.INPPW. OUT
2 4abab
abac
zbab

 

Bài 5: Sụ lây lan (2.0 điểm)

Covid-19 lây lan phô biến nhất khi tiếp xúc gần. Những người ớ gần với người mắc Covid-19 hoặc tiếp xúc trực tiếp với người đó sẽ có nguy cơ lây nhiễm cao nhất.

Giả sử có n người (được đánh số từ 1 đến n) đang ở trên 1 con đưòng trong thành phố. Có thê xem vị trí của họ là những điểm trên trục tọa độ Ox. Với mồi chỉ số i, vị trí cua người thứ i là Uj.

o                               a,             a:                            aj                                34 X

  • —— I—– 1—- +—– t—- t—– 1—– +—– t——- í—– >

0         1234 5 6789

Theo thông báo của cơ quan Y tế , trong n người này có đúng một người đã bị nhiễm Covid-19, nhưng chưa biết đó là ai. Biết rằng, vi-rút sẽ lây lan từ người bị nhiễm sang người không nhiễm bệnh khi khoảng cách tối đa giữa họ bằng 2.

Một người bị nhiễm bệnh sẽ lây nhiễm cho người khác theo hiệu úng tiếp xúc gần. Nhóm người bị nhiễm bệnh này được gọi là tập hợp ngưòi nhiễm bệnh cuối cùng.

Yêu cầu: Hây tìm ra số nhỏ nhất và số lớn nhất những người bị nhiễm cuối cùng, tức là tìm ra con số này trong trường hợp tốt nhất và trong trường hợp xấu nhất có thể

xảy ra.

Dữ liệu: Vào từ file văn bản COVID.INP gồm:

  • Dòng đầu tiên chứa số nguyên n là số người trên đường (1 < n < 100).
  • Dòng thử hai chứa n số nguyên ai, a2, …, an cách nhau bởi dấu cách. Biết rằng 0 < a, < 100.

Kết quả: Ghi ra file văn bản COVID.OƯT chứa hai số nguyên cách nhau bởi dấu cách cho biết số nhỏ nhất và số lớn nhất những người có thê bị nhiễm cuối cùng.

COVID.INPCOVID.OUT
21 1
3 6
33 3
13 5

 

———————————————— HẾT———————————————— ——– :

■ Các tập tin, chương trình phai đặt theo đúng quy định (ca phần tên và phần mở rộng).

Thí sinh không được sử dụng tài liệu. Cán bộ coi thi không giải thích gì thêm.

Họ và tên thí sinh:…………………………….. số báo danh:………………………………………………………

 

KỶ THI CHỌN HỌC SINH GIỘI CÀP TỈNH [RUNG HỌC Cơ Sớ NSm liợc 2021-2022

Môn: TIN HỌC

Thòi gian lảm bài: 15(1 Ịiluìt íkhông kẽ ỉ hởi gian giao đè) Ngáy ihi: 22/03/2022 ị De thi cỏ 04 trang, gồm 05 bùi)

tông ouàn cắc bãi thi

Tèil bàiỉ ilt thương trìnhKilt dữ liựu vàoHiu két quỉ
Bâi 1.SỚ NGUYÊN TỒ DÃY DỨKULLPRIMAKULLPH.JM.LNPí ULLPR.IM.OUT
lỉúi 2.MẶT MẢSIiCRCODE*SECRƠODL.INPSLCRCODL.OUT
Bài 3,CHON PHẢN THƯỞNGBONUSSiiL-*BONLSSLL.INPBỜNUS.SEL.OUT
Bài 4,TAM GIACTR1ANGLE.IRÍANGLL 1NPTR1ANGLL.OUT
tỉai 5.LẢI KLP NGAN HÀNGCOM PIN TACOMPlNTdNPCOMPLNT.OUT
Dổu * dược thay thề bới PAS, CPPt py cún ngôn ngừ tập trình được Sti dạng tương ứng tù PùỊCữl, £.’++, Pyihún hoặc phần mớ rộng tương ửng v&ĩ M:\LT khác.

 

 

Dải I: SỎ NGUYÊN TỞ BẦY DV (4.Ộđiềm)-TỄn thương trhMỈa: FULLP(tlM/ hỉuìỉ niệm:

  • **sỏ HgĩtyỀn tố ‘,ỳ: sắ itgụyỂn dương p (p > ĩ) là sỗ nguyện tỏ khi p chi cù hai ước sỗ ỉà ỉ và chinh nỏ.
  • 4,1 Sổ nguyên tể dầy dù”. Là sé ngụyẻn lổ mủ khỉ viẻt đàơ ngược sẬ đò thi sổ đáo ngược Vần Ịà sa nguyên tà. Vi dụ: Sâ Í3 lá liSữ ĩtguyỂn tổ dãy dii” vỉ khi đặo ntược sô 13 La dược sả31 cEtìg.íè sổ ũgtiy£n lổ, sẶ 53 khủng pliái lá “íd nguyên tổ dầy dù” vl khi dáo ngược sả 53 La được 9ổ 35» và 35 khômỉ phui Jả s6 nguyên lố.

Yeu tầu: Hăy vhk chương ưinh kicm tra trang dằy 5′ sả nguyên dương ù ị cho ưước cù nhữn£                                                                          sỏ

náo Lá **Í1Ử ngiẹyẽn lủ đảv đu’.

I)ữ litií vầo: Đtíợc cbo traÉỊg lộp văn ban KULLPRIM.ÍNPị gồm 2 dóng.

  • Dõng dâu liỏn ghi so .’V ị ì <jV <iỉ(f), lá Sủ phân tư của dẫy.
  • Dùng thứ hai ghi N sả ngưyÊn dưímg ữị {i=l..\. 2 <ứi ệ iũlw), moi số tách nhau bói dảu

cách.

Dứ iiệu ra: Tệp văn hán KULLPKI.M.OI T gốm một dóng thừa dảy ,li’L> nguỳện té đầy du” trơn lì LÍp dừ liệu vào. NẾu trang diy ùi khớmì cộ “iYJ lĩgưyỂn té đầy du” [hi gbi lá 0,

Ví dụ:

Mòn Tín taọẹ_22WV2tì22_Tr»ns 1/4

 

Bàl 1: MẠ í MÃ (4,0 điểm) – TỀH chương trình: SECRCODE.*

]’rong đợt căm trại Mừng Dáng Mừng Xuân, trưùựg THCS 26/3 lủ chức phát thướng cho nhừna học sinh có ihãnh tích cao trong cuộc thi rin học líé. Bạn An dược mọt cỏniĩ ty ABG thưởng phẩn iỊjềm diẹt viniB 1A một thè cù chùa mà hán quyền. Tiên thê cỏ ghi một ỊÍẾU hi tự, mả bán quyền lủ so lượng ki Lự xuái hiện ưong xâu dó theo thứ tự uiphabet (thử tụ lir đien).

Vi dụ: Neư xâu ghi trên ihc lá abzaabbbbbzbbbb [hi có 3 kỉ lự ít, ]|j kỉ tự b vả 2 ki lự r. Nên mà bán quyẾũ lá 3 102.

YÊU cầu: Bạn lú chuvdn VÍCII về lập trinh Lin học, hây ưiÍLp An tim mâ hun quyỂn trẽn [hè.

L>ữ liệu váo: Dược cho trưng tcp ván bán SECItCODE.INP lá một xâu (chửa ki lự thướng ‘Ả.:i trong bâng chữ cái ‘L iệng Anh, chiều dái của xáu khỏng quá lữ1)

Dứ liệu ra: Tệp vãn bán SECkCODE.OUT, ưhi chuồi sắ Lú mã bún quyên.

Vi dụ í

SECRCODE.1NPSECRCODE.OLT
bcỉi{hiiicfxyzhbbcccccỉỉceeex\:xyzzz246351334

 

Giúi thích. Chuồi củ 1 kỉ lự ÚT, 4 ki tự b. 6 k[ Lự c> 3 ki lự íỉf 5 ki Lự e, 1 ki tư£ 3 ki lự JC, 3 kE [ự y vá A kí lự z ncn mả bán quyên Lú 246351334.

Bùi 3: CHỌN THAN THƯỞNG (4.0 điếm) – TỄn chương trinh: BQMlSSEL.*

Trong ký thi học sinh gioi L HCS cáp huyện mủn Toán, trong nỏi dung dề có nói VẺ $fỉ chính ph ương ‘ lá sỏ bãỉig bình phương đúng cua một sổ nguyên. i ỉar hỉàíi đơn gúin, sổ chinh phìỉiĩỉỉg lả một sổ tự nhiên cỏ căn bậc hai cùng ià mật sâ tự nhiên. Bạn An dược giái nhất trong kỷ thi đó, thày Thú giáo viẻn dạy toán hoi dưrtng cho An cỏ phằn ihuứng dặc hiệt cho An, dòng ihới cũng muốn kiềm tra kiến thức toản và lư duy vc lập Irinh tin học cũa An như the nèo đẻ dịnh hướng bạn di ngành CNTT Lrong thửi dại cồng mìhc 4.0. ĩhầy yẾu cẳu An chọn nhừng phần thướng má thấy dã xếp ưèn bán thánh l bán tỉ ịĩỉiíỉ trận) gom m dóntĩ vả n CỘI, mi^i phản ihướniì có aiá trị neuvén dương pỊị, (ỉ< Oỹ<Ị0 Phần thưởng An nhặn dưực lá piông tát cá các “Só chỉnh pỉnrơng” cũa báng,

YẾU càu: Hạn bây Lặp trinh eiũp An nhịn phẩn thướng.

DữUệu vàn: Được cho Lrong tọp vin hun BQNUSSEL.INP gèm:

  • Dõng dầu ticn chứíi 2 sả ngu vón dương ỉti, n (2 <tĩt, n < ÍOrị, Là sơ dõng vú CỘI cùa bang phằn thướng, lách nhau bôi một diu cách.
  • tn dóng licp theo, moi dỏng chừa n số nguyẫn dương ữịị (j-lJ,fFỉ,ý=l..jỉ)1 mội sỏ lách nhau bới một dấu cảch.

Dử ILẹu ra: Tệp vân bán BONLiSâEL.QUT ghi mộl sả, Lá phần ihướng mả An được ihảy thương

Vỉ dụ:

BONUSSEL.INPBỘN USSEL.ÓƯT
234
2 3 4
357

 

 

3535
123
í 5 16
7H9
Hài 4: TAM GIÁC (4.Ũ đìẻtìi) – TỄn chương trình: TKIANGLE.*

 

Kỉìủĩ nĩệiìt :

  • ‘ Tam giỉtL \ Trơna mát phiìne, ba tiiéiíì A„ B„ c lạo ihánb tam giác khi ctmúng khòm; củng nầm trỂn mọi đưimg [hãng hay nbi cách khác, lơn£ dợ dãi hai cạnh JcVn bơn cạnh thứ ba.
  • “Định lý Pĩtagù’. I’am giác ABC vudng khi Lorití binh phương hai cạnh Cua lam ai ác bảng bình phương cạnh cỏn lại của Lam giác.
VI dự:

cA, B. c là 3 đinh cửa tam giác * A, li, c khũmỉ cúng năm trcn dường ihărtg d
d….&AB+ BC > AC và Alỉ + AC > BC vả 8C + ẠC >ẬB.
A**■ TVun giác ABC tà fattì giác vnâỉig tiiĩ (tinh c

& AB: = AƠ + iiơ

YẾU cầu: Lrẻn mầl phàng tọa dụ (OXY) chu 3 dicmẢ, Bị c cũ Lọa dt) lần lượt hì (íi.Xth (xstysị, ‘ệtc;yc)- Bạn hây lập trinh kiểm tra 3 đinh đó tạo thánh tam giác V uũng không?

 

 

Líừ IĨCIL vào: Buợc chu ưung ọp vàn hán TRlANGLL.INP gầm:

  • Dõng dằu II cn chứa Sơ nguyên dương 7\ lủ sầ tượng bộ ba đicm .4, 8, c
  • 7’dàng Licp theo. mồi dửng ehi lụa độ 3 đicm A(xA;yA)ị B{xs;yBL C(xctyc), (các So %A -VjỊf, y-B Jtũ yc lá các su thực và -lO^í yA Xgt ys %c yc ^lO1), các: sỏ Lảcb nhau búi dắu cách.

L>ừ licu ra: Tệp vãn ban TỉtlANGLb.OlJ l, yhi T dùng, mui dỏng gbi ưYES” nẺu lá tam giảc vuông hí lặc “NIO'” nẾu không hi Lam giác vuông.

Ví dụ:

TRIANGLE.INPtriangle,out
iNO
0.0 0.0 LO l.u 2.0 2.0YES
ềJữ 0.0 0.0 iừ.o 0.0 0.0NO
1.0 2.0 3.5 ktì 1.0 2.0

 

Lim Ỷ’ + Binh phương khơáns cách giừa 2 di êm A(XÀy\i) vả lì(.\-B;vsỉ lá

>íBi = (jraJ>;!+(yJ->’J>1

+ Oc hạn ehc sai sớ Ironiĩ [inh toán ki cu sà thục, học sinh nành việc lẩy cần bậc 2 rơi binh phương cùa cfin bậc 2.

Bài 5: LÃI KÉP NGÂN HÀNG (4.0 điểm) – Tên chương trình: COMPINT.*

Khái niệm: “Lãi kép” trong tiếng Anh là Compound interest. Đó là số tiền lãi được xác định dựa trên cơ sở số tiền lãi của các thời kì trước đó được gộp vào vốn gốc để làm căn cứ tính tiền lãi cho các thời kì tiếp theo.

Ông Ba sau khi tích lũy làm ăn nhiều năm dư được 1 số tiền lớn, để tiêu vặt và đóng tiền học phí hàng tháng cho An, Ông đã gửi ngân hàng với lãi suất nhận hàng tháng (Lãi đơn). Do trong đợt dịch Covid-19 vừa qua, để hạn chế tiếp xúc và ra ngân hàng đông người, Ông đã thay đổi hình thức gửi ngân hàng thành hình thức “Lãi kép’’”.

Yêu cầu: Với số vốn ban đầu là M, lãi suất hàng tháng là r%. Bạn hãy lập trình tính tổng số vốn và tiền lãi sau n tháng mà ông Ba nhận được theo hình thức “Lãi kép”.

Dữ liệu vào: Được cho trong tệp văn bản COMPINT.INP:

  • Dòng đầu tiên là số nguyên T (1<=T<=1000) ^
  • T dòng tiếp theo, mỗi dòng gồm 3 số M, r, n lần lượt là tiền vốn ban đầu, lãi suất %/tháng, số tháng. Trong đó, 106 <M <1012, 0.1< r <1.1, 1< n < 5*102.

Dữ liệu ra: Tệp văn bản COMPINT.OUT ghi một số thực, định dạng 1 chữ số thập phân, là tổng số tiền nhận được sau n tháng.

Ví dụ:

Giải thích. Ông Ba gửi 2 khoản tiết kiệm như sau:

Ở khoản tiết kiệm 1: Ông Ba gửi 1000000, với lãi suất 0.7%:

  • Sau 1 tháng. T = M + M*rl100 = 1000000+1000000*0.007=1007000.0
  • Sau 2 tháng. ĩ2 = T + Ti*rl100 = 1007000+1007000*0.007 = 1014049.0
  • Sau 3 tháng. T = T2 + T2*rl100 = 1014049+1014049*0.007 = 1021147.3 Tương tự, ở khoản tiết kiệm 2: Ông Ba gửi 10000000, với lãi suất 0,5%:
  • Sau 1 tháng. Ti = M + M*rl100 = 10000000+1000000*0.005=10050000.0
  • Sau 2 tháng. T = T + T1*rl100 = 10050000+10050000*0.005=10100250.0
  • Sau 10 tháng. Tio = T + T9*rl100 = 10459105.8+10459105.8*0.005=10511401.3

———————————————– hét———————————————–

Thí sinh không đqợc sử dụng tài liệu. Cán bộ coi thi không giải thích gì thêm.

Họ và tên thí sinh. …………………………………………… Số báo danh : ……………………………………………………………

 

 

 

Tên và chữ ký Cán bộ coi thi 1

Tên và chữ ký Cán bộ coi thi 2

 

KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH
TRUnG học Cơ Sở

Năm học 2022-2023 Môn: TIN HỌC

Thời gian: 150 phút (không kể thời gian giao đề) Ngày thi: 21/3/2023 ^

(Đề thi có 5 trang, gồm 5 bài)

TỔNG quan các BÀi thi

Thứ tựrpA I A •

Tên bài

File chương trìnhFile dữ liệu vàoFile kết quả
Bài 1Tương đồngSAME.*SAME.INPSAME.OUT
Bài 2Tách xâuSTRING.*STRING.INPSTRING.OUT
Bài 3May mắnLUCKY.*LUCKY.INPLUCKY.OUT
Bài 4Tam giácTRIANGLE.*TRIANGLE.INPTRIANGLE.OUT
Bài 5Chở hàngGOOD.*GOOD.INPGOOD.OUT
Dấu * được thay thế bởi PAS, CPP, PY của ngôn ngữ lập trình được sử dụng tương ứng là Free Pascal, C++, Python hoặc phần mở rộng tương ứng với NNLT khác.

 

 

Bài 1: (4 điểm) Tương đồng                                                                                                     Tên chương trình: SAME.*

Vườn bưởi nhà Alice có n cây. Để theo dõi sự phát triển của các cây bưởi của mình, Alice thường xuyên đo và ghi lại chiều cao của chúng. Trong tuần này, Alice có được bảng chiều cao của các cây bưởi là một dãy số nguyên a[1], a[2],…, a[n], trong đó a[i] là chiều cao của cây bưởi thứ i. Nhìn vào dãy số, Alice biết có những cây có chiều cao trùng nhau và Alice gọi mỗi tần số trùng nhau là tần số “tương đồng”.

Do số lượng cây bưởi nhiều nên Alice muốn nhờ các bạn lập trình tìm tần số tương đồng lớn nhất của các cây bưởi là bao nhiêu?

Dữ liệu vào: Đọc từ file SAME. INP gồm 2 dòng:

  • Dòng 1: gồm một số nguyên dương n (0 < n <106).
  • Dòng 2: gồm n số nguyên dương a[i] (0 < ai <106), mỗi số ứng với chiều cao của một cây bưởi, giữa các số được cách nhau bởi một khoảng trắng.

Kết quả: Ghi ra file SAME.OUT gồm duy nhất một số nguyên dương là tần số tương đồng lớn nhất.

Ví dụ:

SAME.INPsame.out
7

9 8 6 8 5 6 10

2
2

3 10

1

 

Giải thích bộ test 1:

Có 1 chiều cao: 5;

Có 2 chiều cao: 6;

Có 2 chiều cao: 8;

Có 1 chiều cao: 9;

Có 1 chiều cao: 10

->Tần số tương đồng lớn nhất là: 2

Bài 2: (4 điểm) Tách xâu                                                          Tên chương trình: STRING.*

Hôm nay, mẹ và Cám đi dự dạ hội. Tấm cũng rất muốn được đi. Nhưng trước khi đi, mẹ Cám giao cho Tấm một công việc để làm khó Tấm như sau:

Cho một xâu s gồm các ký tự là các chữ cái in hoa hoặc in thường (trong bảng chữ cái Tiếng Anh) và các kí tự số. Mẹ kế yêu cầu Tấm hãy tách các ký tự trong xâu s thành hai phần như sau:

Phần 1: gồm các chữ cái có mặt trong s nhưng viết theo thứ tự ngược lại.

Phần 2: gồm các chữ số có mặt trong xâu s nhưng phải được sắp xếp theo thứ tự từ nhỏ đến lớn.

Nếu Tấm thực hiện xong công việc thì mới được đi dự tiệc. Nhưng Tấm có thời gian rất ít nên chưa giải được bài toán. Các bạn đội tuyển Tin học hãy giúp đỡ Tấm giải bài toán để Tấm còn được đi dự tiệc nhé!

Dữ liệu vào: Đọc từ file STRING.INP gồm 1 dòng chứa xâu s có độ dài không quá 103 ký tự. Dữ liệu vào đảm trong xâu s luôn có kí tự chữ cái và kí tự chữ số. Kết quả: Ghi ra fíle STRING.OUT gồm 2 dòng:

  • Dòng 1: gồm các chữ cái trong xâu s nhưng được viết theo thứ tự ngược lại.
  • Dòng 2: gồm các chữ số trong xâu s, nhưng phải được sắp xếp theo thứ tự từ nhỏ đến lớn.

Ví dụ:

STRING.INPSTRING.OUT
m2aC0ma2T3TamCam

0223

 

Bài 3: (4 điểm) May mắn                                                          Tên chương trình: LUCKY.*

Trong buổi tiệc liên hoan cuối năm của công ty cung cấp điện thoại Thế Giới Trẻ, ghế ngồi trong hội trường của khách mời được bố trí thành một ma trận hình chữ nhật gồm m hàng và n cột. Để buổi liên hoan thêm vui vẻ, ban tổ chức cho mỗi khách mời rút ngẫu nhiên một phiếu, trên phiếu có ghi một số nguyên dương trong phạm vi từ 1 đến 109.

Ban tổ chức sẽ trao cho những người may mắn mỗi người một phần quà là một chiếc điện thoại. Biết rằng người may mắn là người có số ghi trong phiếu của

mình lớn hơn trung bình cộng của số trong phiếu của những người ngồi xung quanh người đó.

Xung quanh một người được định nghĩa như sau:

Trường hợp 1: Người ngồi ở vị trí góc (trên trái, dưới trái, trên phải, dưới

phải) của hình chữ nhật thì chỉ có 2 người ngồi xung quanh.

Trường hợp 2: Người ngồi ở vị trí bìa (trừ góc) thì có 3 người xung quanh. Trường hợp 3: Người ngồi ở các vị trí còn lại có 4 người xung quanh.

 

Trường hợp 1                                   Trường hợp 2                                                          Trường hợp 3

Ô gạch sọc chỉ vị trí xung quanh của vị trí được tô đen.

Bạn hãy giúp ban tổ chức xác định số lượng điện thoại cần phải chuẩn bị để trao cho những người may mắn.

Dữ liệu vào: Đọc từ file LUCKY.INP gồm:

  • Dòng 1: gồm hai số nguyên dương theo thứ tự m, n (0 < m, n <103), giữa m và n được cách nhau bởi dấu cách.
  • m dòng tiếp theo, mỗi dòng gồm n số nguyên dương có giá trị không quá 109, giữa hai số cách nhau bởi một dấu cách.

Kết quả: Ghi ra file LUCKY.OUT gồm một số nguyên là số điện thoại ban tổ chức cần chuẩn bị.

Ví dụ:

LUCKY.INPLUCKY.OUT
3 43
1 4 3 1
1 1 5 2
2 1 2 1

 

Giải thích:

Số lượng điện thoại cần chuẩn bị là 3, vì có ba người may mắn:

+ Người thứ nhất ngồi ở hàng 1, cột 2, có số phiếu là 4 (có 3 người xung quanh) + Người thứ hai ngồi ở hàng 2, cột 3, có số phiếu là 5 (có 4 người xung quanh) + Người thứ ba ngồi ở hàng 3, cột 1, có số phiếu là 2 (có 2 người xung quanh)

Bài 4: (4 điểm) Tam giác                                                  Tên chương trình: TRIANGLE.*

Alice có n que tính, mỗi que có độ dài là một số nguyên dương. Alice muốn tạo ra các tam giác bằng cách ghép ba que tính lại với nhau, độ dài mỗi cạnh là một que tính.

Em hãy giúp Alice đếm xem có bao nhiêu tam giác được tạo thành từ các que tính này và cho biết diện tích lớn nhất trong các diện tích của các tam giác ghép được là bao nhiêu?

Biết rằng:

+ Hai tam giác được gọi là khác nhau nếu có ít nhất một que tính khác nhau.

+ Ta có thể tính diện tích tam giác theo công thức sau :

s=Vp * (p — à) * (p — b) * (p — c)

Trong đó a,b,c là độ dài 3 cạnh của tam giác, và p là nửa chu vi của tam giác.

Dữ liệu vào: Đọc từ file TRIANGLE.INP gồm:

  • Dòng 1: gồm một số nguyên dương n (3 < n < 100)
  • Dòng 2: gồm n số nguyên dương a[1], a[2], …, a[n] là độ dài của n que tính (1 < a[i] < 106 1<i<n). Giữa các số được cách nhau bởi một khoảng trắng.

Kết quả: Ghi ra file TRIANGLE.OUT gồm:

  • Dòng 1: Ghi số lượng tam giác có thể ghép được.
  • Dòng 2: Ghi một số thực là diện tích lớn nhất của tam giác, kết quả làm tròn đến 2 chữ số ở phần thập phân. Trường hợp không có tam giác nào thì dòng này ghi -1.
TRIANGLE.INPTRIANGLE.OUTGiải thích
53Có 3 tam giác được tạo từ 5 que tính trên:
1 4 5 2 36.00Tam giác 1: Que thứ 2, 3, 4 Tam giác 2: Que thứ 2, 3, 5 Tam giác 3: Que thứ 2, 4, 5 Trong đó tam giác thứ 2 có 3 độ dài là 4 5 3 có có diện tích lớn nhất là 6.00
44Có 4 tam giác được tạo từ 4 que tính trên:
2 2 2 21.73Tam giác 1: Que thứ 1, 2, 3

Tam giác 2: Que thứ 1, 2, 4

Tam giác 3: Que thứ 1, 3, 4

Tam giác 4: Que thứ 2, 3, 4

Trong đó 4 tam giác đều có cùng diện

tích là: 1.73

30Không ghép được tam giác nào
1 2 3-1

 

Bài 5: (4 điểm) Hàng hóa                                                            Tên chương trình: GOOD.*

Cửa hàng tạp hóa XYZ cần chở n kiện hàng giao cho khách. Kiện hàng thứ i có trọng lượng là a[i] tấn. Cửa hàng có một xe tải có trọng tải là m tấn. Trong

chuyến hàng đầu tiên, cửa hàng muốn chở những kiện hàng đi giao thỏa mãn các yêu cầu sau:

  • Yêu cầu 1: Ưu tiên kiện hàng có trọng lượng lớn hơn sẽ được chở đi.
  • Yêu cầu 2: Xe còn đủ trọng tải chở được thì chọn tiếp kiện hàng khác thỏa mãn yêu cầu 1.

Em hãy lập trình giúp cửa hàng xác định trọng lượng các kiện hàng của chuyến xe đầu tiên.

Dữ liệu vào: Đọc từ file GOOD.INP gồm hai dòng:

  • Dòng 1: gồm số nguyên dương n (1 <n<103) là số kiện hàng và số nguyên dương m (0 < m < 109) là trọng lượng của xe tải. Giữa n và m được cách nhau bởi dấu cách.
  • Dòng 2: gồm n số nguyên dương a[i] (0 < a[i] <109, a[i] < m, 1<i<n) thể hiện trọng lượng của kiện hàng thứ i. Giữa các số được cách nhau bởi dấu cách.

Kết quả: Ghi ra file GOOD.OUT các số nguyên dương là trọng lượng của các kiện hàng trong chuyến xe đầu tiên theo trọng lượng giảm dần.

GOOD.INPGOOD.OUT
5 10

7 5 1 3 8

8 1
5 12

2 8 2 4 1

8 4

 

Giải thích bộ test 1:

Có n = 5 kiện hàng và xe có trọng tải m = 10 tấn Các kiện hàng có trọng lượng lần lượt là: 7 5 1 3 8 Vậy các kiện hàng được chở đi trong chuyến đầu tiên có trọng lượng lần lượt là 8 và 1.

Vì kiện hàng có trọng lượng là 8 lớn hơn trọng lượng các kiện hàng còn lại và 8 < m=10 nên được ưu tiên chọn. Trọng tải xe còn có thể chứa được là 10 – 8 = 2, nên chọn tiếp kiện hàng có trọng lượng là 1.

………………………………………………….. HẾT…………………………………………………..

Thí sinh không được sử dụng tài liệu. Giám thị không giải thích gì thêm.

Họ và tên thí sinh: ……………………………………………………………………………….. Số báo danh:……………………………………………………………………..

 

SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH TIỀN GIANG                                                              TRUNG HỌC cơ SỞ

Năm học 2012-2013 Môn: TIN HỌC

Thời gian: 150 phút (không kể thời gian giao đề) Ngày thi: 27/3/2013 (Đề thi có 02 trang, gồm 05 bài)

Hãy ỉập trình giải các bài toán sau:

Bài 1: Chuyển đổi thang đo (5 điểm)               Tên chương trình: DOI.PAS

Một nhà khoa học có ba loại nhiệt kế sử dụng các thang đo nhiệt độ khác nhau: một chỉ độ Celsius (C), một chỉ độ Fahrenheit (F) và một chỉ độ Kelvin (K). Trong thí nghiệm của mình, ông đã sử dụng cả ba loại nhiệt kế và ông cần một máy tính để nhanh chóng chuyển đổi giữa các loại này. Biết công thức chuyển đổi là:

F = –C + 32
5

K = c + 273.15

Yêu cầu: Đọc vào số đo và đơn vị đo nhiệt độ, hãy chuyển đổi sang các đơn vị đo còn lại.

Dữ liệu: Vào từ file văn bản DOI.INP gồm 1 dòng chứa số thực (biểu diễn số đo nhiệt độ) và đơn vị đo nhiệt độ cần chuyển (là một trong các chữ cái F, c, K). Các số này cách nhau bởi dấu cách.

Kết quả: Ghi ra file văn bản DOI.OUT gồm 3 dòng chứa các thông tin theo thứ tự: Nhiệt độ F, Nhiệt độ c, Nhiệt độ K.

DOI.INPDOI.OUT
20 cNhiet do F Nhiet do c Nhiet do K68

20

293.15

 

Bài 2: Đếm số 0 (3 điểm)                                   Tên chương trình: ZERO.PAS

Tìm độ dài xâu con dài nhất chứa các số 0 liên tiếp trong 1 xâu cho trước.

Dữ liệu: Vào từ file văn bản ZERO.INP gồm 1 dòng chứa xâu chỉ gồm các kí tự 0 và 1 (không cách nhau bởi dấu cách). Độ dài xâu không quá 100.

Kết quả: Ghi ra file văn bản ZERO.OƯT chứa độ dài xâu con dài nhất chứa các số 0 liên tiếp.

ZERO.INPZERO.OUT
001011100001104

 

Bài 3: Xóa kí tự (5 điểm)                                   Tên chương trình: XOAKT.PAS

Viết chương trình xóa kí tự thứ n của xâu s cho trước. Các kí tự trong xâu s được đánh số thứ tự từ 1, từ trái sang phải.

Dữ liệu: Vào từ file văn bản XOAKT.INP chứa 1 dòng theo thứ tự gồm 1 số nguyên N, dấu cách, xâu s chỉ chứa các kí tự ‘a\.’z’, ‘A\.’Z\ số N không vượt quá độ dài của xâu s đã cho. Độ dài của xâu s không vượt quá 80.

Bài 4: Tìm số âm (5 điểm)                                    Tên chương trìnhỉ SOAM.PAS

Tìm vị trí của số nguyên âm lớn nhất trong dãy số nguyên cho trước. Nếu tìm được nhiều hơn 2 vị trí thì chỉ ra vị trí đầu tiên xuất hiện (dãy số nguyên được đánh số bất đầu từ 1).

Dữ liệu: Vào từ file văn bản SOAM.INP gồm:

  • dòng thứ nhất chứa số nguyên n – số lượng phần tử có trong dãy.
  • dòng thứ hai chứa n số nguyên của dãy (các số trên cùng 1 dòng cách nhau bởi dấu cách)

Kết quả: Ghi ra file văn bản SOAM.OUT chứa vị trí của số nguyên âm lớn nhất trong dãy, nếu không tìm dược thì ghi -1.________________________________________ ________________________________________

Bài 5: Dãy số (2 điểm)                                                     Tên chương trình: DAYSO.PAS

Số nguyên f được gọi là ước số (dương) của số nguyên d nếu f lớn hơn 0 và tồn tại số nguyên n sao cho f X n = d. Ví dụ, số 12 là ước số của 60 vì 12 X 5 = 60.

Dãy số nguyên Xi, X2, …, Xn được gọi là dãy DDF nếu:

  • Mỗi Xi đều là số nguyên dương.
  • X1>1.
  • Xi+1 (với i > 1) là tổng các chữ số của tất cả các ước số (dương) của Xi.

Ví dụ

Dãy số 17, 9, 13, 5, 6, … là dãy DDF được hình thành theo cách sau:

  • Ước số (dương) của 17 là 1 và 17; tổng các chữ số là 1 + 1 + 7 = 9.
  • Ước số (dương) của 9 là 1, 3 và 9; tổng các chữ số là 1+3 + 9 = 13.
  • Ước số (dương) của 13 là 1 và 13; tổng các chữ số là 1 + 1 + 3 = 5.
  • Ước số (dương) của 5 là 1 và 5; tổng các chữ số là 1 + 5 = 6.

Biết rằng, với dãy số DDF bắt đầu bằng XI thì đến một lúc nào đó sẽ tồn tại Xn sao cho Xj = Xn, với mọi j>n. số Xn sẽ được gọi là so hạng cuối của dãy.

Yêu cầu: Xác định chiều dài của dãy DDF với số hạng đầu cho trước. Chiều dài của dãy DDF là giá trị của n, với Xn là giá trị cuối của dãy.

Dữ liệu: Vào từ file văn bản DAYSO.INP gồm 1 dòng chứa số hạng đầu XI (xi < 2000).

Kết quả: Ghi ra file văn bản DAYSO.OƯT chứa chiều dãi của dãy DDF.

———— hết——————

  • Các tập tin chương trình phải đặt theo đúng quy định (cả phần tên và phần mở rộng).
  • Thí sình không được sử dụng tài liệu.
  • Giám thị không giải thích gì thêm.

 

SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI CHỌN HỌC SINH GIỎI CÁP TỈNH TIỀN GIANG           TRƯNG HỌC cơ SỞ

Năm học 2014-2015 Môn: TIN HỌC

Thời gian: 150 phút (không kể thời gian giao đề) Ngày thi: 25/3/2015 (Đề thi có 03 trang, gồm 05 bài)

Hãy lập trình giải các bài toán sau:

Bài 1: Tìm từ (5 điểm)                                        Tên chương trình: ỊVORD.PAS

Cho trước một xâu kí tự. Một từ được định nghĩa là một xâu con liên tiếp chứa các chữ cái (,al,zl hoặc ‘A’..’Z’). Một từ có thế được giới hạn giữa các dấu cách hoặc chấm câu. Dấu chấm câu là một trong các kí tự sau: dấu chấm (.), dấu phẩy (,), dấu chấm phẩy (;), dấu chấm than (!) hoặc dấu chấm hỏi (?).

Yêu cầu: Hãy tìm tất cả các từ có trong xâu mà có kí tự bắt đầu và kí tự kết thúc giống nhau (có phân biệt giữa chữ in hoa và chữ in thường).

Dữ liệu: Vào từ file văn bản WORD.INP chứa xâu kí tự gồm các chữ cái (‘a’…^’ hoặc ‘A’..’Z’), dấu cách, hoặc dấu chấm câu. Độ dài xâu không quá 100 kí tự.

Kết quả: Ghi ra file văn bản WORD.OƯT danh sách các từ mà có kí tự bắt đầu và kí tự kết thúc giống nhau, mỗi từ trên 1 dòng. Nếu không tìm thấy thì ghi -1.

WORD.INPWORD.OUT
dawd
Jun dawd gog, vex symphs.gog
symphs
Bài 2: Số thử tự (5 điểm)                                      Tên chương trình: INDEX.PAS

 

 

Một file văn bản chứa thông tin về học sinh của một lớp học gồm số thứ tự của học sinh và theo sau là tên của học sinh đó. Do lóp vừa nhận thêm một học sinh chuyển đến và giáo viên chủ nhiệm xếp học sinh này vào đầu danh sách nên cần đánh lại số thứ tự của các học sinh trong danh sách lóp.

Yêu cầu: Đánh lại số thứ tự của tất cả học sinh có trong danh sách bằng cách tăng số thứ tự của mỗi học sinh lên 1 đơn vị và giữ nguyên danh sách theo trật tự ban đầuT

Dữ liệu: Vào từ file văn bản INDEX.INP gồm:

  • Dòng đầu tiên chứa số nguyên N (1 < N < 100).
  • Mỗi dòng trong N dòng tiếp theo chứa thông tin của một học sinh theo thứ tự gồm: số thứ tự (số nguyên từ 1 đến 10000), dấu cách, tên của học sinh (không quá 20 kí tự).

Kết quả: Ghi ra file văn bản INDEX.OƯT danh sách học sinh nhu định dạng ban đầu nhung đã tăng số thứ tự của mỗi học sinh lên 1 đơn vị.

INDEX.INPINDEX.OUT
22
14 Nam15 Nam
42 Thanh43 Thanh

 

Bài 3: Dãy Min-Max (5 điểm)                           Tên chương trình: MINMAX.PAS

Cho trước dãy s chứa các số nguyên, vị trí các phần tử được đánh số từ 1 trở đi và từ trái sang phải.

Yêu cầu: Hãy tìm 2 dãy số nguyên dương, trong đó dãy số thứ nhất biểu diễn các vị trí trong s tại đó chứa số hạng nhỏ nhất của dãy s và dãy số thứ hai biếu diễn các vị trí trong s tại đó chứa số hạng lớn nhất của dãy s.

Dữ liệu: Vào từ file văn bản MINMAX.INP gồm :

  • Dòng đầu chứa số nguyên N – biểu diễn số lượng phần tử của dãy (1 < N < 40)
  • Dòng thứ hai chứa N số nguyên A[i] (-231 < A[i] < 231-1 với 1< i < N)

Kết quả: Ghi ra file văn bản MINMAX.OƯT lần lượt chứa 2 dòng:

  • Dòng thứ nhất chứa dãy số biểu diễn các vị trí trong s tại đó chứa số hạng nhỏ nhất của dãy s.
  • Dòng thứ hai chứa dãy số biểu diễn các vị trí trong s tại đó chứa số hạng lớn nhất của dãy s.

Các số trên cùng 1 dòng cách nhau bởi dấu cách.

MINMAX. INPMINMAX.OUT
73
3 6-146532 5

 

Bài 4: Số gốc (3 điểm)                                         Tên chương trình: ROOT.PAS

Cho trước số tư nhiên a có biểu diễn trong hê cơ số 10 là a = a a _H … an SỐ gốc của số tự nhiên a được xác định như sau:

  • Nếu a chỉ có 1 chữ số thì a cũng là số gốc, ngược lại thực hiện như sau:
  • Chọn ra 2 chữ số đầu tiên từ bên trái an và an-i.
  • Tính tổng s= an + an-i:

o Nếu s <10 thì thay 2 số vừa chọn trong biểu diễn của a bằng s. o Nếu s >10 thì thay 2 số vừa chọn trong biểu diễn của a bằng S-9.

  • Lặp lại quá trình trên cho đến khi a chỉ còn 1 chữ số.
  • Số tìm được bởi quy luật trên được gọi là số gốc.

Ví dụ: Tìm số gốc của số a= 87345691. Đầu tiên, cộng 2 số 8 và 7. Ta được số 15. Vì tổng tìm được lớn hơn 10 nên ta thay 2 số đầu của a bằng 15-9, khi đó a sẽ là 6345691. Tiếp tục, cộng 2 số 6 và 3 được 9, sau khi thay thế a sẽ là 945691. Cộng 2 số 9 và 4 được 13, sau khi thay thế a sẽ là 45691. Cộng 2 số 4 và 5 được 9, sau khi thay thế a sẽ là 9691. Cộng 2 số 9 và 6 được 15, sau khi thay thế a sẽ là 691. Cộng 2 số 6 và 9 được 15, sau khi thay thế a sẽ là 61. Cộng 2 số 6 và 1 được 7, sau khi thay thế a sẽ là 7. Sơ đồ thay thế như sau:

8+7=15^15-9=6->6+3=9->9+4=13^13-9=4->4+5=9->9+6=15^15-9=6^6+9=15^ 15-9=6^6+1=7 SỐ gốc tìm được là 7.

Yêu cầu: Viết chương trình xác định số gốc của số nguyên a cho trước.

Dữ liệu: Vào từ file văn bản ROOT.INP chứa số nguyên a (< maxlongint).

Kết quả: Ghi ra file văn bản ROOT.OƯT chứa số gốc của số nguyên a.

ROOT.INPROOT.OUT
873456917

 

Bài 5: Xâu SubsThree (2 điểm)                       Tên chương trình: SƯBSTH.PAS

Xâu con của xâu s được hiểu là một dãy các ký tự liên tiếp của s.

Xâu SubsThree của s là xâu con thỏa mãn:

  • Đó là xâu khác rỗng và chỉ chứa các chữ số ‘0’..’9’
  • Nếu chuyển xâu này sang số thập phân thì sẽ được số chia hết cho 3

Ví dụ, xâu “130a303” chứa 9 xâu Substhree như sau: ba xâu “3”, hai xâu “30”, hai xâu “0”, một xâu “303” và một xâu “03”. Xâu “30a3” không là xâu Substhree vì có chứa chữ cái, còn xâu “13” không xâu Substhree vì số 13 không chia hết cho 3.

Lưu ý rằng hai xâu Substhree được xem là khác nhau nếu chúng khác nhau về độ dài hoặc vị trí bắt đầu của chúng trong xâu s (mặc dù các kí tự của chúng giống nhau)

Yêu cầu: Cho trước xâu s, hãy đếm số lượng xâu Substhree chứa trong s.

Dữ liệu: Vào từ file văn bản SƯBSTH.INP chứa xâu khác rỗng s có tối đa 106 kí tự. Môi kí tự của s chỉ có thể là chữ số ‘0’..’9′ hoặc chữ in thường ‘aVy.

Kêt quả: Ghi ra fìle văn bản SƯBSTH.OƯT chứa nguyên biểu diễn số lượng xâu Substhree chứa trong s.

SUBSTH.INPSUBSTH.OUT
130a3039

 

————— hết————————-

  • Các tập tin chương trình phải đặt theo đủng quy định (cả phần tên và phần mở rộng).
  • Thí sinh không được sử dụng tài liệu.
  • Giảm thị không giải thích gì thêm.

 

SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH TIÈN GIANG        TRUNG HỌC co SỞ

Năm học 2013-2014 Môn: TIN HỌC

Thời gian: 150 phút (không kể thời gian giao đề) Ngày thi: 26/3/2014 (Đề thi có 03 trang, gồm 05 bài)

Hãy lập trình giải các bài toán sau:

Bài 1: Dãy Subtra (5,0 điểm)                             Tên chương trình: SUBTRA.PAS

Dãy số ti, t2,…tm được gọi là dãy Subtra nếu:

  • Mỗi phần tử ti (i=T..m) của dãy là một số nguyên lớn hơn hoặc bằng 0.
  • Mồi phần tử của dãy, bắt đầu từ phần tử thứ ba là hiệu của hai phần tử liền kề trước nó (tn+2=tn – tn-1 với t >1). Dãy sẽ kết thúc ở tm nếu tm-i<tm.

Ví dụ, nếu bắt đầu bằng hai số 120 và 71 thì dãy Subtra được phát sinh

như sau: 120; 71; 49; 22; 27. Dãy kết thúc ở số 27, độ dài của dãy là 5.

Yêu cầu: Đọc vào hai số ti và Í2, hãy tìm độ dài của dãy Subừa với hai sổ bắt đầu là ti và t2.

Dữ liệu: Vào từ fíle văn bản SƯBTRA.INP chứa hai số nguyên dương ti và t2, 0<Í2<ti< 10000, mỗi số nằm trên 1 dòng.

Kết quả: Ghi ra file văn bản SUBTRA.OƯT độ dài của dãy Subtra với hai số bắt đau là ti và t2-

SUBTRA.INPSUBTRA.OUT
120

71

5

 

Bài 2: Đọc văn bản (3,0 điểm)                                    Tên chương trình: ARAP.PAS

Tiếng Ả Rập, tiếng Ba Tư và tiếng Do Thái là các ngôn ngừ rất đặc biệt không giống như tiếng Anh và nhiều thứ tiếng khác, nó được viết từ phải sang trái. Tuy nhiên, những con số vẫn giừ nguyên (viêt từ trái sang phải). Ví dụ,

câu “manteiv fo tsaoc ffo deraeppasìd sregnessap 221 gniyrrac 777 gnieoB” sẽ được viết theo tiếng Anh là: “Boeing 777 carrying 221 passengers disappeared off coast of Vietnam

Yêu cầu: Chuyển xâu văn bản tiếng Ả Rập sang văn bản Tiếng Anh.

Dữ liệu: Vào từ file văn bản ARAP.INP chứa xâu văn bản theo tiếng Ả rập gồm các từ, mồi từ chứa các kí tự (a-z, A-Z, 0-9) ngăn cách nhau bởi dấu cách.

Kết quả: Ghi ra file văn bản ARAP.OUT chứa xâu văn bản theo tiếng Anh.

ARAP.INPARAP.OUT
manteiv fo tsaoc ffo deraeppasid sregnessap 227 gniyrrac 777 gnieoBBoeing 777 carrying 227 passengers disappeared off coast of Vietnam

 

Bài 3: Độ cao (5,0 điểm)                                Tên chương trình: HEIGHT.PAS

Bạn được giới thiệu một số địa điểm để tham quan. Mỗi địa điểm được giới thiệu bao gồm tên địa điểm và độ cao của nó.

Yêu cầu: Hãy xác định trong các địa điểm đã cho, một địa điểm có độ cao gần nhất với độ cao của bạn ưa thích.

Dữ liệu: Vào từ file văn bản HEIGHT.INP gồm:

  • dòng thứ nhất chứa số nguyên m – độ cao ưa thích của bạn.
  • Các dòng tiếp theo, mỗi dòng chứa các thông tin theo thứ tự sau: tên của một địa điểm, dấu cách, một số nguyên thể hiện độ cao của địa điểm đó.

Kết quả: Ghi ra file văn bản HEIGHT.OUT chứa tên địa điểm mà bạn chọn. Nếu có 2 địa điểm được chọn thỏa mãn yêu cầu đề ra, hãy in ra tên địa điểm có độ cao lớn hon.

HEIGHT.INPHEIGHT.OUT
5

Everest 8850 Kamet 7756 Bahamas 10 Maldives 0 Mariana -11521

Bahamas

 

Bài 4: Tính thời gian chênh lệch (5,0 điểm) Tên chương trình: TIME.PAS

Để xây dựng các công trình thủy lợi đôi khi cần phải khoan nổ mìn đào đá. Việc tính toán thời gian nổ phải thật chính xác để đảm bảo an toàn cho người lao động.

Yêu cầu: Biết thời điểm hiện tại và thời điểm sẽ xảy ra vụ nổ. Hãy xác định khoảng thời gian chênh lệch giữa 2 thời điểm nói ưên.

Dữ liệu: Vào từ file văn bản TIME.INP gồm:

  • dòng đầu tiên chứa thời điểm hiện tại ở dạng hh:mm:ss (giờ, phút, giây). Giờ (hh) là số nguyên từ 0 đến 23; phút (mm), giây (55) là các số nguyên từ 0 đến 59. Các giá trị hh, mm, ss được định dạng 2 chừ số.
  • dòng thứ hai chứa thời điểm sẽ xảy ra vụ nổ theo định dạng như trên. Kết quả: Ghi ra file văn bản OƯT chứa khoảng thời gian chênh lệch giừa 2 thời điểm theo định dạng như trên. Biết rằng thời gian chênh lệch ít nhất 1 giây và tối đa 24 giờ.
TIME.INPTIME.OUT
20:00:00

04:00:00

08:00:00
12:34:56

14:36:22

02:01:26
Bài 5: Số mát mẻ (2,0 điểm)                             Tên chương trình: COOL.PAS

 

 

Theo định nghĩa của một nhóm nghiên cứu Tin học, 0 là một chừ số mát mẻ. Họ gọi độ mát của một số là số lượng 0 trong biểu biễn thập phân của nó. Ví dụ: độ mát của số 100 là 2, độ mát của số 1 là 0.

Yêu cầu: Tìm tổng độ mát của các số từ 0 đến sổ nguyên N cho trước.

Dữ liệu: Vào từ file văn bản COOL.INP chứa số nguyên N (0< N < 10 000

000).

Kết qỊuả: Ghi ra fíle văn bản COOL.OUT chứa tổng độ mát của các số từ 0 đến sổ nguyên N.

COOL.INPCOOL.OUT
556

———– hét——————

•                Các tập tin chương trình phải đặt theo đúng quy định (cả phần tên và phần mở rộng).

•        Thí sinh không được sử dụng tài liệu.

•       Giám thị không giải thích gì thêm.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Cho trước số nguyên N. Hãy tìm số nguyên lớn nhất nhỏ han N sao cho tổng các chữ số của nó nhỏ hơn tổng các chữ số của số nguyên N một đơn vị.

Dữ liệu: Vào từ fíle văn bản NUMBER.INP chứa số nguyên N(1<N<100

000) ‘

Kết quả: Ghi ra file văn bản NUMBER.OƯT chứa số nguyên cần tìm.

NUMBER.INPNUMBER.OUT
15201510

 

Bài 3: Báo cáo tài chính (5 điểm)                            Tên chươiĩg trình: REPORTPAS

Nhân dịp tổng kết cuối năm, bạn được giao nhiệm vụ thống kê tổng số chi phí của từng nhân viên của một công ty sau các chuyến du lịch trong năm. Mỗi nhân viên phải nộp báo cáo chi phí cá nhân cho bạn sau mỗi chuyến đi.

Yêu cầu: Viết một chương trình đọc vào danh sách gồm tên từng người và chi phí của họ, sau đó tạo ra một danh sách được sắp xếp theo tên nhân viên, kèm theo tống số chi phí của mỗi cá nhân.

Dữ liệu: Vào từ file văn bản REPORT.INP có:

  • dòng đầu tiên chứa số nguyên n (1< n <100), số lần nộp bảo cáo của các nhân viên trong công ty.
  • n dòng tiếp theo mỗi dòng chứa 2 giá trị: tên người và chi phí tương ứng (là một số thực). Tên người và chi phí cách nhau bởi dấu cách. Lưu ý: tên người không phân biệt chữ in và chữ thường (ví dụ: Trung và tRung được xem là như nhau).

Kết quả: Ghi ra file văn bản REPORT.OUT chứa danh sách các nhân viên trong công ty kèm theo tổng chi phí của họ trong năm, trong đó tổng chi phí được làm tròn hai số lẻ. Danh sách cần được sắp xếp alphabet theo tên người. Tên người phải được viết hoa chữ cái đầu tiên, các chữ cái còn lại là chữ thường.

REPORT.INPREPORT.OUT
5

trung 450.55 binh 1034.56 trUNg 1000.00 daNn 530.00 danH 470.00

Binh 1034.56 Danh 1000.00 Trung 1450.55

 

Cho trước hai sổ nguyên N và D. Hãy tỉm N số nguyên dương X]…XN sao cho hiệu số giữa tích của chúng và tổng của chúng bằng với D.

Dữ liệu: Vào từ file văn bản SUMPRO.INP chứa hai số nguyên dương N (2<N< 1000) và D (0 <D < 1000).

Kết quả: Ghi ra file văn bản SUMPRO.OUT chứa N số nguyên dương thỏa mãn yêu cầu nói trên theo thứ tự không giảm. Lưu ý rằng các số tìm được có thể bằng nhau. Giá trị các số được in không vượt quá 1 o6.

Các số trên cùng 1 dòng cách nhau bởi dấu cách

SUMPRO.INPSUMPRO.OUT
3 512 8

 

Bài 5: Cân bằng bit (2,0 điểm)                                     Tên chương                                                                             trình:                                                                             BỈT.PAS

Đọc vào 2 xâu khác rỗng s và T có độ dài bằng nhau,                                                                                                        s                                                                                                  chứa các kí tự                                                                                                  ‘0’,

‘1’và ‘?\ còn T chỉ chứa các kí tự ‘0’ và ‘1\

Yêu cầu: Hãy chuyển đổi xâu s thành xâu T với số bước nhỏ nhất. Biết rằng môi bước có thế thực hiện một trong các thao tác sau:

  1. Thay đổi kí tự ‘0’ trong s thành ‘r.
  2. Thay đổi kí tự ‘?’ trong s thành ‘0’ hoặc ‘
  3. Hoán đối 2 kí tự bât kỳ trong xâu s.

Ví dụ: Với xâu s = ‘0?1?’ và T = ‘1001’. Ta có thể chuyển s thành T trong vòng 3 bước sau:

  • Bước 1: Hoán đổi S[l] và S[3]. s trở thành ‘1?0?’
  • Bước 2: Chuyển S[2] to ‘0’. s trở thành ‘100?’
  • Bước 3: Chuyển S[4] to ‘ r. s trở thành 41 oor

Dữ liệu: Vào từ file văn bản BIT.INP gồm 2 dòng chứa 2 xâu s và T, mỗi dòng có độ dài không quá 100.

Kết quả: Ghi ra fỉle văn bản BIT.OUT chứa số bước nhỏ nhất để chuyển đổi s thành T. Nếu không chuyển đổi được thì ghi số -1.

BIT.INPBIT.OUT
0?1?

1001

3

————- HẾT——————

•     Các tập tin chương trình phải đặt theo đúng quy định (cả phần tên và phần mở rộng).

•     Thỉ sình không được sử dụng tài liệu.

•     Giám thị không giải thích gì thêm.

 

 

Họ và tên thí sinh:…………………………………… số báo danh:……………………………………………………………

 

SỎ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI CHỌN HỌC SINH GIỎI CÁP TỈNH TIẺN GIANG         TRƯNG HỌC co SỎ

Năm học 2016-2017 Môn: TIN HỌC

Thời gian: 150 phút (không kể thời gian giao đề) Ngày thi : 22/3/2017 (Đe thi có 04 trang, gồm 05 bài)

Hãy lập trình giải các bài toán sau:

Bài 1: Giai thừa ngược (5 điểm)                                  Tên chưong trình: PINV.PAS

Trong toán học, n! (đọc là n giai thừa) được định nghĩa như sau:

n! =1x2x3x … X (n-1) X n (n là số nguyên không âm) Ví dụ:      3! = 1 X 2 X 3 = 6

Đặc biệt: với n = 0, người ta quy ước 0! = 1. Ký hiệun! được dùng lần đầu bởi Christian Kramp vào năm 1808.

Yêu càu: Biết trước giá trị của n!, hãy tìm sô nguyên n.

Dữ liệu: Vào từ file văn bản FINV.INP chứa giá trị của n!. Biết rằng số chữ số của n! không vượt quá 1 o6.

Kết quả: Ghi ra file văn bản FlNV.OƯT chua số tự nhiên n tìm được. Nêu không tìm được số nauvên n thì ghi -1.

FINV.INPFINV.OUT
362880010

 

Bài 2Í Chu kỳ dự đoán (5 điểm)                                  Tên chương trình: PẼRI.PAS

Ngày nay, có nhiều mô hình dự báo nhăm để biết trước những điều có thể xảy ra trong tương lai. Một mô hình thường dự báo, dự đoán giá trị của biến số (hoặc một dãy biến số) tại một số diêm trong tương lai căn cứ vào những dữ liệu trong quá khứ.

Dãy số nguyên ai. a2, …,an được gọi là dãy dự đoản chu kỳ k nếu tồn tại số nguycn dương k (IV k<n) sao cho mọi phần tử a; của dãy đều thỏa mãn a, a;+k với 1< i< n (nếu phần ai+k nằm ngoài dãy thì xem như nó nhận giá trị tùy chọn), số nguyên dương nhỏ nhất k thỏa mãn tính chất trên được gọi chu kỳ dự đoán của dãv số.

Một lập trình viên được đặt hàng viết chương trình phân tích chuỗi giá trị cho trước và cho biêt chuỗi này có khả năng tạo chu kỳ dự đoán k=3 hay không?

Yêu cầu: Đọc vào 1 dãy số nguvên và cho biết có là dãv dự đoán chu kỳ k=3 không?

Dữ liệu: Vào từ file văn bản PERI.INP

  • Dòng đầu chứa số nguyên n (3< n < 500).

 

  • Dòng thứ hai chứa n số nguyên aj (1< ai < 100). Các số này được cách nhau bởi dấu cách.

Ket quả: Ghi ra file văn bản PERI.OUT chứa chữ “YES” nếu dãy đã cho là dãy dự đoán chu kỳ k=3, ngược lại ghi chữ “NO”.

PERI.INPPERI.OUT
12

12 3′ 123123123

YES
11

123123 t 2312

YES
7

7 3 6 7 2 3 9

NO

 

Bài 3: Tên mã (4 điểm)                                                     Tên chương trình: CODE.PAS

Ngoài tên gọi chính, một hệ điều hành còn có tên phiên bản và tên mã (codename), tất cả đều được đặt theo một quy luật hay lý do nào đó. Ví dụ, hệ điều hành Android 4.4 có tên mã là KITKAT, Windows Phone có tên mã PHOTON, Fedora 14 có tên là LAƯGHLIN.

Tại Hội nghị triến lãm sản phẩm phần mềm, Ban Tổ chức quy định rằng tên mã đạt siải cao nhất là tên mã có số lượng chữ cái khác nhau nhiều nhất. Ví dụ: Tên mã K1TKAT có 4 chữ cái khác nhau: A, I, K và T; Tên mã JELLY BEAN có 7 chữ cái khác nhau A, B, E, J, L, N và Y; nên tên mã JELLY BEAN đạt giải cao nhất.

Ngoài ra cũng lưu ý rằng, nếu hai tên mã có cùng số chữ cái khác nhau thì tên mã nhỏ hơn sẽ đạt giải cao nhất. Biêt rằng phép so sánh hai tên mã được thực hiện theo quy tăc như sau:

+ Tên mã A gọi là nhỏ hơn tên mã B (B lớn hơn A) nếu như kí tự dầu tiên khác nhau giữa chúng kể từ trái sang phải trong tên mã A có mã ASCII nhỏ hơn.

+ Nếu A và B là các tên mã có độ dài khác nhau và A là đoạn đầu của B thì A là nhỏ hơn B.

Yêu cầu: Được biết danh sách liệt kê tên mã của các hệ điều hành, hãy xác định tên mã của hệ điều hành đạt giải cao nhất?

Dữ liệu: Vào từ fìle văn bản CODE.INP gồm:

  • Dòng đầu tiên chứa số nguyên n cho biết số lượng tên mã của các hệ điều hành (1 < n< 100).
  • Mỗi dòng trong n dòng tiếp theo chứa một tên mã của hệ điều hành (mỗi dòng chứa không quá 20 kí tự). Mỗi tên mã đều bắt đầu và kết thúc bằng chữ cái in hoa. Giả sử tên mã của một hệ điều hành gồm các chữ cái in hoa ‘A’..’Z’ và có thể chửa dấu cách ở giữa.

Ket quả: Ghi ra ílle văn bản CODE.OUT chứa tên mã đạt giải cao nhất.

CODE.INPCODE.OUT
3

OREO

KITKAT

 

 

SID

KĨTKAT _____________________

Bài 4: Xổ số điện toán (4 điểm)                            Tên chương trình: LOT.PAS

Người chơi tham gia được tự chọn n vé số để dự thưởng, mỗi vé số là một chuồi số gồm 6 bộ số phân biệt, mỗi bộ số là 1 số nguyên có 2 chữ số (có giá trị từ 01, 02,…,45).

trên.

Sau khi so từng vé số với chuỗi số kết quả quay thưởng của Ban Tổ chức công bô, người chơi sẽ biêt được có trúng thưởng hay không. Tổng sô tiền thưởng của người chơi là tống số tiền thưởng nhận được của từng vé số trúng thưởng.

Cơ cấu giải thưởng được xác định như sau:

  • Giải đặc biệt (trúng cả 6 bộ số) : 12 tỷ (đồng)
  • Giải nhất (trúng cả 5 bộ số) : 10 000 000 (dồng)
  • Giải nhì (trúng cả 4 bộ số) : 300 000 (đòng)
  • Giải ba (trúng cả 3 bộ số) : 30 000 (đồng)

Lưu ý:

  • Các bộ số của 1 vé số trùng với kết quả các bộ số của quay thưởng không cần theo thư tự.
  • Trong trường hợp một vé số trúng nhiều giải thưởng thì người trúng thưởng chỉ được lĩnh một giải thưởng cao nhất.
  • Nếu nhiều vé số trúng giải, trong đó có giải đặc biệt thì chỉ nhận giải đặc biệt Ợackpot).

22

thì người này sẽ trúng thưởng 60000 đồng Dữ liệu: Vào từ file văn bản LOT.INP gồm:

  • Dòng đầu tiên chứa chuỗi sổ kết quả quay thưởng.
  • Dòng thứ hai chứa số nguyên n (1 <n<100), số lượng tờ vé số của người chơi.
  • n dòng tiếp theo, mỗi dòng chứa thông tin của 1 vé số.

Các bộ số trong chuỗi số kết quả quay thưởng và trong 1 vé số cách nhau bởi dấu cách.

Ket quả: Ghi ra file văn bản LOT.OUT chứa tổng số tiền thưởng nhận được. Nếu không trúng thưởng thì ghi số 0. Neu trúng giải đặc biệt thì ghi ‘JACKPOT’.

LOT.INPLOT.OUT
03 02 07 41 36 22 560000

 

 

Bài 5: Số bội của 3 (2 điểm)

Hệ thông lưới điện có thê bị gây hại bởi nhiêu tác nhân, trong đo một nguy cơ tiềm ẩn làm cản trở hoạt động và làm hao mòn thiết bị nhưng ít người nhận biết được chính là sóng hài – mối nguy cơ tiềm ẩn được phát hiện ngay đầu thập niên 1890.

Sóng hài (harmonic) là dòng điện không mong muốn làm quá tải đường dây và biến áp, làm tăng nhiệt độ hệ thống (hoặc thậm chí gây hỏa hoạn) và gây nhiễu lên lưới điện. Sóng hài là các điện áp hay dòng điện hình sin có tần số là bội số của tần số công nghiệp (tần số cơ bản), do hiện diện của các tải phi tuyến trong lưới điện. Ví dụ dòng điện hài có tần số 150HZ trên lưới điện 50HZ là sóng hài bậc 3. Thường chỉ có sóng hài bậc lẻ 3, 5, 7, 9 là xuất hiện trong lưới điện 3 pha.

Với tần số của 1 dòng điện đã cho, cần tìm sóng hài bậc 3 có ảnh hưởng đối với tân số của dòng điện đã cho.

Yêu cầu: Cho trước tự nhiên n. Hãy thay đổi 1 chữ số của n để được số chia hết cho 3 và là số lớn nhất trong các so tìm được (kể cả trường hợp ban đâu n chia hết cho 3).

Dữ liệu: Vào từ file văn bản MUL3.INP chứa số tự nhiên n có tối đa 100 chữ số.

Kết quả: Ghi ra file văn bản MUL3.0UT chứa số tự nhiên tìm được theo yêu cầu trên.

MUL3.INPMUL3.OUT
123723
96
HÉT

 

 

  • Các tập tin chương trình phải đặt theo đủng quy định (cả phần tên và phần mở rộng).
  • Thỉ sinh không được sử dụng tài liệu.
  • Giám thị không giải thích gì thêm.

Họ và tên thí sinh:……………………………………………… số báo danh:……………………………………………………………….

 

KỲ THI CHỌN HỌC SINH GIỎI CÁP TỈNH TRUNG HỌC CO SỞ Năm học 2017-2018 Môn: TIN HỌC

Thời gian: 150 phút (khổng kể thời gian giao đề)

Ngày thi: 30/3/2018

(Đê thi có 03 trang, gồm 05 bài)

Hãy lập trình giải các hài toán sau:

Bài 1: Chỉ số BMR (5 điểm)                                          Tên chương trình: BMR.PAS

‘BM&Ợìasal Metabolic Rate) là chỉ số năng lượng cơ bản của cơ thể cho biết mức năng lượng tối thiểu mà cơ thế cần để duy trì các hoạt động bình thường.

  • Công thức tính chỉ số BMR:

Nừ giới: BMR = 655 + (9.6 X kg) -f (1.8 X cm) – (4.7 X tu ổi) Nam giới: BMR = 66 + (13.7 X kg) -h (5 X cm) –                                                                                                    (6.8 X tuồi)

  • Cách tính tống lượng calo cần hấp thụ theo từng múc độ hoạt động the chất
  • Nếu bạn quá ít hoạt động (ít hoặc không tập luyện): Caỉo = BMR X 1.2
  • Neu bạn ít hoạt động (ít tậu thể dục/thê thao 1-3 ngày/tuần): Calo = BMR X 375
  • Nếu bạn hoạt động vừa (tập thê dục/thế thao vừa vừa 3-5 ngày/tuần): Calo = 55
  • Nếu bạn hoạt động nhiều (tập thẻ dục/thề thao nhiều 6-7 ngày/tuần): Calo = BMR X 1.725
  • Nêu bạn hoạt động cường độ cao (tập thê dục/thê thao cường độ cao & cỏng việc thể chất hoặc tăng gấp đổi lượng luyện tập): Calo = BMR X 1.9

Yẽu cầu: Đọc vào thông tin của 1 người bao gồm giới tính, tuổi, chiều cao, cân nặng và mức độ hoạt động của người đó. hãy tính lượng calo cần thiết.

Dữ liệu: Vào từ file văn bản BMRHNP gồm 5 dòng:

  • Dòng 1: Chứa chữ “NAM’’ hoặc “NU”, cho biết giới tính của người đó.
  • Dỏng 2:Chứa số nguyên cho biết tuổi.
  • Dòng 3: Chứa số nguyên cho biết chiều cao (tính bằng cm).
  • Dòng 4: Chứa số nguyên cho biết cân nặng (tính bàng kg).
  • Dòng 5: Chứa 1 trong các ki tự “S”, “L”, “M”, “A”, “E”, cho biết mức độ hoạt động tương ứng như sau:

S: quá ít hoạt động (ít hoặc không tập luyện); L: ít hoạt động; M: hoạt động vừa; A: hoạt động nhiều; E: hoạt động cường độ cao.

Kết quả: Ghi ra file văn bản BMR.OUT chứa lượng calo cần thiết cho người đó. Kết quả là một số nguyên không lấy phán thập phân.

BMR.INPBMR. OUT
NAM1713
52
1 65
65
s

 

Bài 2: Số Emỉrp (5 điểm)                                                  Tên chương trình: EMỈRP.PAS

Số Emirp là một số nguyên tố mà khi đảo ngược vị trí các chữ số của nó, ta cũng được một số nguyên tố. Định nghĩa này không bao gồm các số nguyên tố xuôi ngược (đọc ngược hay xuôi cũng là số nguyên tố chính nó), như 151 hoặc 787) và không bao gồm các số nguyên tố có một 1 chữ số. Biêt rằng, số nguyên tố là số tự nhiên chỉ có hai ước sô dương phân biệt là 1 và chính nó.

Yêu cầu: Đọc vào số nguyên n, hãy cho biết n có là số Emirp không?

Dữ liệu: Vào từ file văn bản EM3RP.INP chứa số nguyên n (1< n < 10000).

Kết quả: Ghi ra file văn bản EMIRP.OUT chứa chứa chữ “YES” nếu n là số Emirp, ngược lại ghi chữ “NO”.

EMIRP . INPEMIRP.OUT
149YES

 

Bài 3: Số thân thiện (4 điểm)                                        Tên chương trình: FRIEND.PAS

Người ta gọi bộ 3 số nguyên dương là thăn thiện nếu chúng khác nhau đôi một và tích của hai trong số chúng chia hết cho số thứ ba.

Yêu cầu: Đọc vào hai số nguyên dương phân biệt, hãy đếm xcm có bao nhiêu số nguyên tạo với hai số dã cho thành bộ 3 số thăn thiện.

Dữ liệu: Vào từ file văn bản FRIEND.INP chứa 2 số nguyên dương phân biệt cách nhau bởi dấu cách, mỗi số có giá trị không vượt quá 40000.

Kết quả: Ghi ra file văn bản ERIEND.OUT chứa số lượng số nguyên tạo với hai số đã cho thành bộ 3 sô thân thiện.

FRIEND.INPFRIEND.OUT
5 15õ
Giải thích: Có đúng hơi số cùng với số 5 và số ỉ5 tạo thành bộ 3 thân thiện là số 3 (vì 3×5 chia hết cho 15, 3×15 chia hết cho 5 và 5 X 15 là chia hết cho 3) và số 75 (vì 5 X 15 chia hết cho 75, 5 x 75 chia hết cho 15 và 15 X 75 chia hết cho 5).

 

 

Bài 4: Giải mã Email (3 điểm)                               Tên chương trình: EMAIL.PAS

Một người dùng giấu một mật khẩu trong một email đâ gửi. Email đã gửi bao gồm một số dòng văn bản. Mỗi dòng chứa một số từ. Từ là dãy liên tiếp các chữ cái 6a\.’z\ Mật khẩu được thành lập bằng cách ghép theo thứ tự các từ lấy trong nội dung email đã gửi.

Mật khẩu được tìm thấy dựa theo quy luật sau:

 

  • Dòng thứ nhât củẩ ciriail không chứa mặt khẩu.
  • Dòng thử hai của email chứa từ đầu tiên của mật khẩu.
  • Dòng thứ ha của email chứa từ thứ hai của mật khẩu.
  • Dòng thử tư của email chứa từ thử ba của mật khẩu.

Và tiếp tục như thể…

Luu ý: Nếu trên một dòng nào của email khòng tìm được từ nào của mật khẩu theo quy luật trên thì lừ tìm được là rỗng và không đưa từ rỗng vào mật khẩu.

Dữ liệu: Vào từ file văn bản EMAIL.INP gồm:

  • Dòng đầu tiên chửa số dòng của email (email chứa không quá 50 dòng).
  • Các dòng tiếp theo chứa nội dung của Einail.

Kết quả: Ghi ra file văn bản EMAIL.OUT chứa mật khẩu tìm được theo quy luật trên. Mỗi từ cua mật khâu nằm trcn 1 dòng. Dữ liẹu vào đain bảo mật khẩu tìm được luôn khác rỗng.

EMAIL.INPEMAIL,OƯT
5toi
viet nam la quoc gia thuoc khu vuc dong nam adang
toi thay hoa vang tren co xanho
tet dang vao nhanga
tim nha o
bay chim thien nga
Bái 5: Dãy con (3 điểrii)                                                 Tên chương trình: SƯBSEQ.PAS

 

 

Cho dãy A có n phần tử. mỗi phần tử là một số nguyên (có thể âm, bàng 0 hoặc dương). Hãy tim dãy con khác rỗng các phần tử liên tiép của A sao cho:

  • Phần tử đầu dãv con và cuối dãy con bằng nhau.
  • Tổng các phần tử của dãy con là lớn nhất.

Hay nói cách khúc: Tìm 2 số nguvên / và /• (1 <l<r<n) sao cho a/ = ar và tổng a/ + ÍU+I + • • • + ar là lớn nhất.

Dữ liệu: Vào từ file văn bản SUBSEQ.INP gồm:

  • Dòng thử nhất chứa số nguyên n (1 < n < 106) – số lượng phần tử cúa A.
  • Dòng thứ hai chứa n số nguyên aụ ãi,…, a„ (-109 < ai <109. 1 < i <n).

Kết quả: Ghi ra file văn bản SUBSEQ.OUT gồm:

  • Dòng thứ nhất chứa tổng lớn nhất tìm được.
  • Dòng thứ hai chứa hai số nguyên / và

Các số trên cùng một dòng cách nhau bởi dấu cách. Neu tìm được hơn 1 lời giải thì xuất ra bát kỳ một trong số chúng.

SƯBSEQ.INPSƯBSEQ.OƯT
55
12 12 32 4
…………… HÉT…………………..

•                Các tập tin chương trình phải đặt theo đúng quy định (cả phần tên và phần mở rộng).

•        Thí sinh không được sử dụng tài liệu.

•       Giám thị không giải thích gì thêm.

 

 

KỲ THI CHỌN HỌC SINH GIỎI CÁP TỈNH TRUNG HỌC CO SỞ Năm học 2018-2019 Môn: TIN HỌC

Thời gian: 1.50 phút (không kể thời gian giao đề)

Ngày thi: 20/3/2019

(Đề thi có 04 trang, gồm 05 bài)

TONG QUAN CÁC BÀI THI

Tên bàiFile chương trinhFile dữ liệu vàoFi!e kết quả
Bài 1Lễ hội Cà phôCAPE.*CAFE.INPCAFE.OUT
Bài 2Số ưa thíchHKE.*LIKE.INPLIKE.OUT
Bài 3Phuc hồi dãy sốSEỌ.*SEQ.INPSEQ.OŨT
Bài 4Số nguyên tố lớn nhấtPRIME.*PRIME.INPPRIME.OUT
Bài 5Dãy số điều hòaHARMONIC.*HARMONIC.INPHARMONIC.OUT

(Dấu * đưọc thay bỏi PAS hoặc CPP của ngôn ngũ’ lập trình đuọc sử dụng tuoìig ứng vỏ’i Pascal hoặc C++). Hãy lập trình giải các bài toán sau:

 

 

Bài 1: Lễ hội Cà phê (5 điểm)

Ban To chức Lễ hội Cà phê năm 2019 vạch ra một kế hoạch cho các sự kiện sẽ diễn ra trong Le hội. Mỗi sụ’ kiện được Ban Tổ chức dự kiến thời gian diễn ra bao gồm thời gian bắt đầu và thời gian kết thúc.

Yêu cầu: Căn cứ thông tin của Ban Tố chức, hãy xác định thời gian bắt đầu (thời gian bắt đầu của SỊT kiện sớm nhất) và kểt thúc (thòi gian kết thúc sự kiện cuối cùng) của Lề hội, tông thời lượng của các sự kiện (không bao gồm thời gian nghỉ) và tông thòi gian nghỉ.

Dữ liệu: Vào từ file văn bán CAFE.INP có:

  • Dòng đầu tiên chứa một số nguyên n – số lượng sự kiện (1 < n <20).
  • Dòng thứ i của n dòng tiếp theo chứa thông tin về các sự kiện bao gồm: Si là tên của sự kiện (bao gồm các chữ cái không quá 100 ký tự), thời gian bắt đầu của sự kiện là ai và thòi gian kết thúc bi. Thời gian được cho là hợp lệ và theo định dạng hh:mm (không có dấu cách ở giữa) và có giá trị từ 00:00 đên 23:59. Giữa Si và aị có thê có một hoặc nhiêu dâu cách, giữa ai và bi là dấu trừ (-). Mỗi sự kiện chi được tố chức tại một thòi điểm. Một sự kiện không the kéo dài dưới 1 phút.

Kết qua: Ghi ra file văn bản CAFE.OƯT chứa bổn dòng:

Dòng ĩ: Thời gian bắt đầu (thòi gian bắt đầu của sự kiện sớm nhất).

Dòng 2: Thời gian kết thúc (thời gian kết thúc sự kiện cuối cùng).

Dùng 3: Tổng thời lượng của các sự kiện (không bao gồm thời gian nghỉ). Dòng 4: Tống thời gian nghỉ.

Tất cả dữ liệu đầu ra theo định dạng hh:mm.

CAFE.INPCAFE.OUT
310 : 00
Opening 15:20-17:2017 : 20
Speech 10:00-11:0005 : 00
Festival 12:00-14:0002:20

 

Bài 2: Số ua thích (5 điểm)

Bình rất thích các số trong đó không có hai chữ số liên tiếp giống nhau.

Yêu cầu: Với một số nguyên n được cho, hãy giúp Bình tìm sổ nguyên nhỏ nhất, lớn han hon n, mà Bỉnh thích.

l)ữ liệu: Vào từ file văn bản LIKE.INP chứa số nguyên n (1 < n < 1018).

Kết quả: Ghi ra ílle văn bản L1KE.OUT chứa sô nguyên nhỏ nhất lớn hơn n, trong đó không có hai chừ sô liên tiếp giông nhau.

LIKE.INPLIKE.OUT
98101

 

Bài 3: Phục hồi dãy số (4 điểm)

Trong 1 tiết dạv toán, các học sinh đang được giới thiệu về các số nguyên dương. Đê chuân bị cho tiết học, giáo viên viết sẵn các số từ 1 đến n theo thứ tự tăng dần (từ trái sang phải) trên bảng.

Tuy nhiên, có một học sinh nghịch ngợm đã chạy vào lóp học và đã xóa đi một số đã đưọ’c giáo viên viết trên bảng. Đứng trước Hiệu trưởng, học sinh này xưng tên là Nam, học sinh này rất hối hận và nói rằng mình chỉ xóa đúng một số trong dãy số.

Yêu cầu: Hãy giúp giáo viên tìm hiểu xem điều này có đúng không, và nếu có thế, hãy cho biết số nào đã bị xóa.

Dfr liệu: Vào từ file vãn bản SEQ.INP gồm:

  • Dòng đầu tiên chứa số nguvên n – sô lượng số nguyên đã được giáo viên ghi trên bảng (2 < n < 1000).
  • Dòng thứ hai chứa số nguyên m – số lượng số nguyên còn lại trên bảng sau khi học sinh đã xóa (1 < m <1000).
  • Dòng thử ba chứa m số nguyên ai, a2, . . . , am — dãy số nguyên còn lại sau khi Nam đã xóa, theo đúng thứ tự mà chúng đã được ghi trên bảng (1 < ãị < 1000).

Kết quả: Ghi ra fde văn ban SEQ.OƯT theo định dạng sau:

  • Nếu lời giải thích của Nam là hợp lý:
  • Ghi chữ “Yes” dòng đầu tiên.
  • Dòng tiếp theo chứa số nguyên đã bị Nam xóa.
  • Nếu lời giải thích của Nam là không hợp lý: Ghi chữ “No”.
SEQ.INPSEQ.OUT
4Yes
32
13 4

 

Bài 4: Số nguyên tố ló’n nhất (4 điểm)

Một giáo viên Toán muốn kiếm tra kiến thức số học của học sinh lóp mình đang dạy bằng cách như sau: Đầu tiên Ồng giới thiệu với học sinh hai số tự nhiên a vàb. Sau đó yêu cầu học sinh hình thành các sô mới theo quy tăc:

  • Lấy chữ số đầu tiên của số a: Đặt thay cho chữ số đầu tiên của số b, tạo thành một số mới; Đặt thay cho chữ số cuối cùng của số b, tạo thành một số mới.
  • Lấy chữ số thứ hai của số a: Đặt thay cho chừ số đầu tiên của số b, tạo thành một số mới; Đặt thay cho chữ số cuối cùng của số b, tạo thành một số mới.

Tiếp tục tạo các số khác theo quy tắc trên cho đến hết chữ số cuối cùng của số a. (nếu số a có 3 chừ sổ thì sẽ có 6 sổ được tạo thành).

Yêu cầu: Biết hai số a và b, hãy tìm sổ nguyên tố lớn nhất trong các số được hình thành theo quy tắc trẻn (kể cả hai số ban đầu a và b). Neu không tìm được số nguyên tố lớn nhất như yêu cầu ở trên thì hiển thị số lớn nhất có thể (kể cả hai số ban đau a và b).

Dữ liệu: Vào từ fiỉe văn bủn PRIME.INP chứa hai số nguyên a vàb (10 < a, b

< ỉ000000).

Kết quả: Ghi ra tìle văn bản PRIME.OIT chứa số nguyên tìm được theo yêu cầu ở trên.

Ví dụ:

_____ *__________________________________________________ ______________________________________ _

Bài 5: Dãy số điểu hòa (2 điểm)

Trung bình điểu hòa là một trong ba trung bình Pythagoras, hai trung bình kia lả trung bình nhân và trung bình cộng (trong Excel có hàm HARMEAN trả về trung bình điều hòa của một tập hợp dữ liệu)

Ta nói rằng ba số a, b, c theo thứ tự tạo thành dãy số điểu hòa nêu b là trung bình điều hòa của a và c, nghĩa là:

2

a c

Yêu cầu: Biết trước số tụ nhiên b, hãy xác định tất cả các cặp số tự nhiên (a, c) sao cho a, b, c tạo thành dãy số điều hòa.

Dữ liệu: Vào từ file văn bản HARMONIC.INP in chứa một số tự nhiên b.

Kết quả: Ghi ra lìlc văn bản HARMONIC.OUT chứa ở dòng đẩu tiên một số tự nhiên n cho biết cho số cặp số tự nhiên (a, c) trong đó b là giá trị trung bình diều hòa. n dòng tiếp theo sẽ hiến thị các cặp số (a, c) tìm được (chúng cách nhau bởi một dấu cách).

Hạn chế và hru ỷ:

  • 1 < b < 10°;
  • Các cặp số trong file kêt quả có thê được hiến thị (heo bất kỳ thứ tự nào;
  • Neu b là trung bình điều hòa giữa hai số khác nhau a và c thì các cặp (a, c) và (c, a) được coi là lời giải riêng biệt.
HARMONIC.INPHARMONIC.OƯTGiải thich
33số 3 là trung bình điều
3 3hòa của số 3 và 3. Ta có
dãy số điều hòa (3, 3,
2 63)
6 2Số 3 là trung bình điều
hòa của số 2 và 6. Ta có
các các dãy số điều hòa
(2,3,6) và (6,3,2)
————- Hét ——————–

•                Các tập tin chuvng trình phải đặt theo đúng quy định (cả phần tên và phần mở rộng).

•       Thí sinh không được sử dụng tài liệu.

•       Giảm thị không giải thích gì thêm.

 

 

 

KỲ THI CHỌN HỌC SINH GIỎI CẢP TINH TRƯNG HỌC CO SỞ, NÃM HỌC 2020-2021

Môn: TIN HỌC

Thời gian: 150 phút (không kê thời gian giao để)

Ngày thi: 31/3/2021

(Đê thi có 04 trang, gồm 05 bài)

TỎNG QUAN CÁC BÀI THI

Tên bàiFi!e chuông trìnhFile dữ liệu

vào

File kết quả
Bài 1Số kết đôiNUM.*NUM.INPNUM.OUT
Bài 2World cupCUP.*CUP.INPCUP.OƯT
Bài 3Phần tư điên hìnhPART.*PART.1NPPART.OUT
Bài 4Đặt mật khẩuPW.*PW.INPPW.OUT
Bài 5Sự lây lanCOVID.*COV1D.INPCOVID.OUT

 

Dấu * được thay thế bời PAS, CPP hoặc PY cứa ngôn ngữ lập trình được sử dụng tương ứng là Pascal, C++ hoặc Python.

Bài 1: Số kết đôi (5.0 điểm)

Số nguyên dươna X được gọi là số kết đôi nếu như có thê tim thấy hai số nguyên a, b thoa mãn các điều kiện:

  • ì < a < b < X

, _        , a 1

  • X è = X và – > —

b 2

Yêu cầu: Hãy xác định một số nguyên cho trước có là số kết đôi hay không?

Dữ liệu: Vào từ file văn bản NUM.INP chứa số nguyên X (1 < X < 215).

Kết quả: Ghi ra file văn bản NUM.OƯT chứa số 1 nếu X là số kết đôi, ngược lại ghi số 0.

Bài 2: VVorld cup (5.0 điêm)

Liên đoàn Bóng đá Ọuốc tế (FIFA) đã ấn định ngày khai mạc World Cup 2022. Đội chủ nhà Qatar sẽ đá trận đầu tiên trong ngày khai mạc là ngày 21/11/2022.

Phương đang sống ờ Việt Nam, rất dam mê bóng đá và mong chờ được xem lễ khai mạc.

 

Yêu cầu: Hãy giúp Phương tính xem kể từ một mốc thời gian ngày, còn bao nhiêu ngày nữa là đến lễ khai mạc. Ví dụ, mốc thời gian là ngày hôm nay, nếu lễ khai mạc là ngày mai, thì sẽ còn 1 ngày nữa. Cho biết:

a) Số ngày trong 1 tháng:

Tháng123456789101112
Số ngày3128 (29 nếu là năm nhuận)31303130313130313031

b) Năm nhuận:

 

 

Năm nhuận là năm chia hết cho 400 hoặc chia hết cho 4 mà không chia hết cho 100. Ví dụ, năm 1800 không phải là năm nhuận; năm 2016, 2000 là năm nhuận.

Dữ liệu: Vào từ íile văn bản CUP.INP chứa 1 xâu cho biết mốc thời gian ngày cần tính theo định dạng “dd.mm.vyyy”. Trong đó dd là ngày có giá trị từ 01 đến 31, nim là tháng có giá trị từ 01 đến 12, yyyy là năm có 4 chữ số. Dừ liệu ngày cho là hợp lệ. Kết quả: Ghi ra tìle văn bản CƯP.OUT chứa số ngày sẽ đến lễ khai mạc FIFA World Cup 2022.

Bài 3: Phần tử điển hình (4.0 điềm)

Cho trước một mảng có n phần tử A = [ai, a2,…, an]. Phần tử a, được gọi là điển hình nếu tồn tại một cặp chí số L và R (1 < L < R < n) sao cho aj = aL + aL+i +…+ aR. Nói cách khác, một phần tử được gọi là điển hình nếu nó có thể được biếu diễn dưới dạng tông của hai hoặc nhiều hơn các phần tử liên tiếp của một mảng.

Yêu cầu: Đem số phần tử điển hình cua mảng đã cho A.

Ví dụ, nếu n = 9 và A = [3, 1,4, 1, 5, 9, 2, 6, 5] thì số phần tứ điển hình của A là 5, cụ thê:

  • a3 = 4 là phần tử điển hình, vì a3 = 4 = ãị + a2 = 3 + 1;
  • a5 = 5 là phần tử điển hình, vì a5 = 5 = a2 + a3 = 1 + 4;
  • a6 = 9 là phần tử điển hình, vì a6 = 9 = ai + a2 + a3 + a4 = 3 +   1 + 4 + 1;
  • a8 = 6 là phân tử điển hình, vì a8 = 6 = a2 + a3 + a4 = 1 + 4 +     1;
  • ãg – 5là phần tử điên hình,vì ay = 5 = a2 + a3 = 1 +

Lun ý rằng các phần tử của mảng A có thế bằng nhau nên nếu có một số phần tử điển hình mà bằng nhau thì tất cả chúng sẽ được đếm.

Dữ liệu: Vào từ íìle văn bản PART.INP gồm:

  • Dòng đầu tiên chứa số nguyên n là số phần tử của mảng A (1 < n < 8000).
  • Dòng thứ hai chứa n số nguyên cách nhau bởi dấu cách ax, a2,…, an

(1 < al < n).

Kết quả: Ghi ra file văn ban PART.OUT chứa số phần tử điển hình cua mang đã cho.

PART.INPPART.OUT
9

314159265

5

 

Bài 4: Đặt mật khấu (4.0 điểm)

Quên mật khẩu Facebook, Gmail, Zalo… là việc thuờng xảy ra khi chúng ta phải đàng nhập rất nhiều tài khoản hằng ngày. Bên cạnh việc tạo mật khẩu mạnh là việc làm thế nào mà bạn có thế nhớ nhùng mật khâu đã tạo. Một người dùng internet nghĩ ra cách tạo một mật khấu mới như sau: Mật khẩu mới là mật khâu chỉ khác các mật khẩu mà anh ta đã có (tạo ra hoặc được cung cấp) nhiều nhất 1 vị trí.

Yêu cầu: Với n xâu s 1 ,s2,- – •, Sn cho trước, các xâu đêu có cùng độ dài m. Hãy tạo xâu mật khấu mới p sao cho mỗi xâu tronc sô n xâu đã cho khác xâu p không hơn một vị trí. Hay nói cách khác, với mồi xâu Si không có hơn 1 vị trí j sao cho Sj[j] V

PDL

Lưu ý: Xâu p mong muốn có thê bằng một trong các xâu Si đã cho, hoặc nó có thể khác với tất cả các xâu Si đã cho.

Dữ liệu: Vào từ file văn bản PW.INP gồm:

  • Dòng đầu tiên chứa hai số nguyên nvàra (n: số xâu; m: độ dài mỗi xâu; 1 < n, m < 10).
  • Dòng thứ i trong n dòng tiếp theo chứa xâu Si, có độ dài m và chi chứa các chữ cái in thường (‘a’..‘z’).

Kết quả: Ghi ra file văn bản PVV.OƯT

  • Nếu bài toán có lời giải: Ghi xâu p có độ dài m và chỉ chứa các chữ cái in thường (‘a’..‘z’). Nếu bài toán có nhiều lời giải: Ghi bất kỳ xâu p nào thỏa mãn.
  • Nếu bài toán không có lời giai: Ghi số -1.
PW.INPPW. OUT
2 4abab
abac
zbab

 

Bài 5: Sụ lây lan (2.0 điểm)

Covid-19 lây lan phô biến nhất khi tiếp xúc gần. Những người ớ gần với người mắc Covid-19 hoặc tiếp xúc trực tiếp với người đó sẽ có nguy cơ lây nhiễm cao nhất.

Giả sử có n người (được đánh số từ 1 đến n) đang ở trên 1 con đưòng trong thành phố. Có thê xem vị trí của họ là những điểm trên trục tọa độ Ox. Với mồi chỉ số i, vị trí cua người thứ i là Uj.

o                               a,             a:                            aj                                34 X

  • ——— I——— 1——– +——— t——- t——— 1——– +——– t———- í——— >

0         1234 5 6789

Theo thông báo của cơ quan Y tế , trong n người này có đúng một người đã bị nhiễm Covid-19, nhưng chưa biết đó là ai. Biết rằng, vi-rút sẽ lây lan từ người bị nhiễm sang người không nhiễm bệnh khi khoảng cách tối đa giữa họ bằng 2.

Một người bị nhiễm bệnh sẽ lây nhiễm cho người khác theo hiệu úng tiếp xúc gần. Nhóm người bị nhiễm bệnh này được gọi là tập hợp ngưòi nhiễm bệnh cuối cùng.

Yêu cầu: Hây tìm ra số nhỏ nhất và số lớn nhất những người bị nhiễm cuối cùng, tức là tìm ra con số này trong trường hợp tốt nhất và trong trường hợp xấu nhất có thể

xảy ra.

Dữ liệu: Vào từ file văn bản COVID.INP gồm:

  • Dòng đầu tiên chứa số nguyên n là số người trên đường (1 < n < 100).
  • Dòng thử hai chứa n số nguyên ai, a2, …, an cách nhau bởi dấu cách. Biết rằng 0 < a, < 100.

Kết quả: Ghi ra file văn bản COVID.OƯT chứa hai số nguyên cách nhau bởi dấu cách cho biết số nhỏ nhất và số lớn nhất những người có thê bị nhiễm cuối cùng.

COVID.INPCOVID.OUT
21 1
3 6
33 3
13 5

 

———————————————— HẾT———————————————— ——– :

■ Các tập tin, chương trình phai đặt theo đúng quy định (ca phần tên và phần mở rộng).

Thí sinh không được sử dụng tài liệu. Cán bộ coi thi không giải thích gì thêm.

Họ và tên thí sinh:…………………………….. số báo danh:………………………………………………………

 

KỶ THI CHỌN HỌC SINH GIỘI CÀP TỈNH [RUNG HỌC Cơ Sớ NSm liợc 2021-2022

Môn: TIN HỌC

Thòi gian lảm bài: 15(1 Ịiluìt íkhông kẽ ỉ hởi gian giao đè) Ngáy ihi: 22/03/2022 ị De thi cỏ 04 trang, gồm 05 bùi)

tông ouàn cắc bãi thi

Tèil bàiỉ ilt thương trìnhKilt dữ liựu vàoHiu két quỉ
Bâi 1.SỚ NGUYÊN TỒ DÃY DỨKULLPRIMAKULLPH.JM.LNPí ULLPR.IM.OUT
lỉúi 2.MẶT MẢSIiCRCODE*SECRƠODL.INPSLCRCODL.OUT
Bài 3,CHON PHẢN THƯỞNGBONUSSiiL-*BONLSSLL.INPBỜNUS.SEL.OUT
Bài 4,TAM GIACTR1ANGLE.IRÍANGLL 1NPTR1ANGLL.OUT
tỉai 5.LẢI KLP NGAN HÀNGCOM PIN TACOMPlNTdNPCOMPLNT.OUT
Dổu * dược thay thề bới PAS, CPPt py cún ngôn ngừ tập trình được Sti dạng tương ứng tù PùỊCữl, £.’++, Pyihún hoặc phần mớ rộng tương ửng v&ĩ M:\LT khác.

 

 

Dải I: SỎ NGUYÊN TỞ BẦY DV (4.Ộđiềm)-TỄn thương trhMỈa: FULLP(tlM/ hỉuìỉ niệm:

  • **sỏ HgĩtyỀn tố ‘,ỳ: sắ itgụyỂn dương p (p > ĩ) là sỗ nguyện tỏ khi p chi cù hai ước sỗ ỉà ỉ và chinh nỏ.
  • 4,1 Sổ nguyên tể dầy dù”. Là sé ngụyẻn lổ mủ khỉ viẻt đàơ ngược sẬ đò thi sổ đáo ngược Vần Ịà sa nguyên tà. Vi dụ: Sâ Í3 lá liSữ ĩtguyỂn tổ dãy dii” vỉ khi đặo ntược sô 13 La dược sả31 cEtìg.íè sổ ũgtiy£n lổ, sẶ 53 khủng pliái lá “íd nguyên tổ dầy dù” vl khi dáo ngược sả 53 La được 9ổ 35» và 35 khômỉ phui Jả s6 nguyên lố.

Yeu tầu: Hăy vhk chương ưinh kicm tra trang dằy 5′ sả nguyên dương ù ị cho ưước cù nhữn£                                                                          sỏ

náo Lá **Í1Ử ngiẹyẽn lủ đảv đu’.

I)ữ litií vầo: Đtíợc cbo traÉỊg lộp văn ban KULLPRIM.ÍNPị gồm 2 dóng.

  • Dõng dâu liỏn ghi so .’V ị ì <jV <iỉ(f), lá Sủ phân tư của dẫy.
  • Dùng thứ hai ghi N sả ngưyÊn dưímg ữị {i=l..\. 2 <ứi ệ iũlw), moi số tách nhau bói dảu

cách.

Dứ iiệu ra: Tệp văn hán KULLPKI.M.OI T gốm một dóng thừa dảy ,li’L> nguỳện té đầy du” trơn lì LÍp dừ liệu vào. NẾu trang diy ùi khớmì cộ “iYJ lĩgưyỂn té đầy du” [hi gbi lá 0,

Ví dụ:

Mòn Tín taọẹ_22WV2tì22_Tr»ns 1/4

 

Bàl 1: MẠ í MÃ (4,0 điểm) – TỀH chương trình: SECRCODE.*

]’rong đợt căm trại Mừng Dáng Mừng Xuân, trưùựg THCS 26/3 lủ chức phát thướng cho nhừna học sinh có ihãnh tích cao trong cuộc thi rin học líé. Bạn An dược mọt cỏniĩ ty ABG thưởng phẩn iỊjềm diẹt viniB 1A một thè cù chùa mà hán quyền. Tiên thê cỏ ghi một ỊÍẾU hi tự, mả bán quyền lủ so lượng ki Lự xuái hiện ưong xâu dó theo thứ tự uiphabet (thử tụ lir đien).

Vi dụ: Neư xâu ghi trên ihc lá abzaabbbbbzbbbb [hi có 3 kỉ lự ít, ]|j kỉ tự b vả 2 ki lự r. Nên mà bán quyẾũ lá 3 102.

YÊU cầu: Bạn lú chuvdn VÍCII về lập trinh Lin học, hây ưiÍLp An tim mâ hun quyỂn trẽn [hè.

L>ữ liệu váo: Dược cho trưng tcp ván bán SECItCODE.INP lá một xâu (chửa ki lự thướng ‘Ả.:i trong bâng chữ cái ‘L iệng Anh, chiều dái của xáu khỏng quá lữ1)

Dứ liệu ra: Tệp vãn bán SECkCODE.OUT, ưhi chuồi sắ Lú mã bún quyên.

Vi dụ í

SECRCODE.1NPSECRCODE.OLT
bcỉi{hiiicfxyzhbbcccccỉỉceeex\:xyzzz246351334

 

Giúi thích. Chuồi củ 1 kỉ lự ÚT, 4 ki tự b. 6 k[ Lự c> 3 ki lự íỉf 5 ki Lự e, 1 ki tư£ 3 ki lự JC, 3 kE [ự y vá A kí lự z ncn mả bán quyên Lú 246351334.

Bùi 3: CHỌN THAN THƯỞNG (4.0 điếm) – TỄn chương trinh: BQMlSSEL.*

Trong ký thi học sinh gioi L HCS cáp huyện mủn Toán, trong nỏi dung dề có nói VẺ $fỉ chính ph ương ‘ lá sỏ bãỉig bình phương đúng cua một sổ nguyên. i ỉar hỉàíi đơn gúin, sổ chinh phìỉiĩỉỉg lả một sổ tự nhiên cỏ căn bậc hai cùng ià mật sâ tự nhiên. Bạn An dược giái nhất trong kỷ thi đó, thày Thú giáo viẻn dạy toán hoi dưrtng cho An cỏ phằn ihuứng dặc hiệt cho An, dòng ihới cũng muốn kiềm tra kiến thức toản và lư duy vc lập Irinh tin học cũa An như the nèo đẻ dịnh hướng bạn di ngành CNTT Lrong thửi dại cồng mìhc 4.0. ĩhầy yẾu cẳu An chọn nhừng phần thướng má thấy dã xếp ưèn bán thánh l bán tỉ ịĩỉiíỉ trận) gom m dóntĩ vả n CỘI, mi^i phản ihướniì có aiá trị neuvén dương pỊị, (ỉ< Oỹ<Ị0 Phần thưởng An nhặn dưực lá piông tát cá các “Só chỉnh pỉnrơng” cũa báng,

YẾU càu: Hạn bây Lặp trinh eiũp An nhịn phẩn thướng.

DữUệu vàn: Được cho Lrong tọp vin hun BQNUSSEL.INP gèm:

  • Dõng dầu ticn chứíi 2 sả ngu vón dương ỉti, n (2 <tĩt, n < ÍOrị, Là sơ dõng vú CỘI cùa bang phằn thướng, lách nhau bôi một diu cách.
  • tn dóng licp theo, moi dỏng chừa n số nguyẫn dương ữịị (j-lJ,fFỉ,ý=l..jỉ)1 mội sỏ lách nhau bới một dấu cảch.

Dử ILẹu ra: Tệp vân bán BONLiSâEL.QUT ghi mộl sả, Lá phần ihướng mả An được ihảy thương

Vỉ dụ:

BONUSSEL.INPBỘN USSEL.ÓƯT
234
2 3 4
357

 

 

3535
123
í 5 16
7H9
Hài 4: TAM GIÁC (4.Ũ đìẻtìi) – TỄn chương trình: TKIANGLE.*

 

Kỉìủĩ nĩệiìt :

  • ‘ Tam giỉtL \ Trơna mát phiìne, ba tiiéiíì A„ B„ c lạo ihánb tam giác khi ctmúng khòm; củng nầm trỂn mọi đưimg [hãng hay nbi cách khác, lơn£ dợ dãi hai cạnh JcVn bơn cạnh thứ ba.
  • “Định lý Pĩtagù’. I’am giác ABC vudng khi Lorití binh phương hai cạnh Cua lam ai ác bảng bình phương cạnh cỏn lại của Lam giác.
VI dự:

cA, B. c là 3 đinh cửa tam giác * A, li, c khũmỉ cúng năm trcn dường ihărtg d
d….&AB+ BC > AC và Alỉ + AC > BC vả 8C + ẠC >ẬB.
A**■ TVun giác ABC tà fattì giác vnâỉig tiiĩ (tinh c

& AB: = AƠ + iiơ

YẾU cầu: Lrẻn mầl phàng tọa dụ (OXY) chu 3 dicmẢ, Bị c cũ Lọa dt) lần lượt hì (íi.Xth (xstysị, ‘ệtc;yc)- Bạn hây lập trinh kiểm tra 3 đinh đó tạo thánh tam giác V uũng không?

 

 

Líừ IĨCIL vào: Buợc chu ưung ọp vàn hán TRlANGLL.INP gầm:

  • Dõng dằu II cn chứa Sơ nguyên dương 7\ lủ sầ tượng bộ ba đicm .4, 8, c
  • 7’dàng Licp theo. mồi dửng ehi lụa độ 3 đicm A(xA;yA)ị B{xs;yBL C(xctyc), (các So %A -VjỊf, y-B Jtũ yc lá các su thực và -lO^í yA Xgt ys %c yc ^lO1), các: sỏ Lảcb nhau búi dắu cách.

L>ừ licu ra: Tệp vãn ban TỉtlANGLb.OlJ l, yhi T dùng, mui dỏng gbi ưYES” nẺu lá tam giảc vuông hí lặc “NIO'” nẾu không hi Lam giác vuông.

Ví dụ:

TRIANGLE.INPtriangle,out
iNO
0.0 0.0 LO l.u 2.0 2.0YES
ềJữ 0.0 0.0 iừ.o 0.0 0.0NO
1.0 2.0 3.5 ktì 1.0 2.0

 

Lim Ỷ’ + Binh phương khơáns cách giừa 2 di êm A(XÀy\i) vả lì(.\-B;vsỉ lá

>íBi = (jraJ>;!+(yJ->’J>1

+ Oc hạn ehc sai sớ Ironiĩ [inh toán ki cu sà thục, học sinh nành việc lẩy cần bậc 2 rơi binh phương cùa cfin bậc 2.

Bài 5: LÃI KÉP NGÂN HÀNG (4.0 điểm) – Tên chương trình: COMPINT.*

Khái niệm: “Lãi kép” trong tiếng Anh là Compound interest. Đó là số tiền lãi được xác định dựa trên cơ sở số tiền lãi của các thời kì trước đó được gộp vào vốn gốc để làm căn cứ tính tiền lãi cho các thời kì tiếp theo.

Ông Ba sau khi tích lũy làm ăn nhiều năm dư được 1 số tiền lớn, để tiêu vặt và đóng tiền học phí hàng tháng cho An, Ông đã gửi ngân hàng với lãi suất nhận hàng tháng (Lãi đơn). Do trong đợt dịch Covid-19 vừa qua, để hạn chế tiếp xúc và ra ngân hàng đông người, Ông đã thay đổi hình thức gửi ngân hàng thành hình thức “Lãi kép’’”.

Yêu cầu: Với số vốn ban đầu là M, lãi suất hàng tháng là r%. Bạn hãy lập trình tính tổng số vốn và tiền lãi sau n tháng mà ông Ba nhận được theo hình thức “Lãi kép”.

Dữ liệu vào: Được cho trong tệp văn bản COMPINT.INP:

  • Dòng đầu tiên là số nguyên T (1<=T<=1000) ^
  • T dòng tiếp theo, mỗi dòng gồm 3 số M, r, n lần lượt là tiền vốn ban đầu, lãi suất %/tháng, số tháng. Trong đó, 106 <M <1012, 0.1< r <1.1, 1< n < 5*102.

Dữ liệu ra: Tệp văn bản COMPINT.OUT ghi một số thực, định dạng 1 chữ số thập phân, là tổng số tiền nhận được sau n tháng.

Ví dụ:

Giải thích. Ông Ba gửi 2 khoản tiết kiệm như sau:

Ở khoản tiết kiệm 1: Ông Ba gửi 1000000, với lãi suất 0.7%:

  • Sau 1 tháng. T = M + M*rl100 = 1000000+1000000*0.007=1007000.0
  • Sau 2 tháng. ĩ2 = T + Ti*rl100 = 1007000+1007000*0.007 = 1014049.0
  • Sau 3 tháng. T = T2 + T2*rl100 = 1014049+1014049*0.007 = 1021147.3 Tương tự, ở khoản tiết kiệm 2: Ông Ba gửi 10000000, với lãi suất 0,5%:
  • Sau 1 tháng. Ti = M + M*rl100 = 10000000+1000000*0.005=10050000.0
  • Sau 2 tháng. T = T + T1*rl100 = 10050000+10050000*0.005=10100250.0
  • Sau 10 tháng. Tio = T + T9*rl100 = 10459105.8+10459105.8*0.005=10511401.3

———————————————– hét———————————————–

Thí sinh không đqợc sử dụng tài liệu. Cán bộ coi thi không giải thích gì thêm.

Họ và tên thí sinh. …………………………………………… Số báo danh : ……………………………………………………………

 

 

 

Tên và chữ ký Cán bộ coi thi 1

Tên và chữ ký Cán bộ coi thi 2

 

KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH
TRUnG học Cơ Sở

Năm học 2022-2023 Môn: TIN HỌC

Thời gian: 150 phút (không kể thời gian giao đề) Ngày thi: 21/3/2023 ^

(Đề thi có 5 trang, gồm 5 bài)

TỔNG quan các BÀi thi

Thứ tựrpA I A •

Tên bài

File chương trìnhFile dữ liệu vàoFile kết quả
Bài 1Tương đồngSAME.*SAME.INPSAME.OUT
Bài 2Tách xâuSTRING.*STRING.INPSTRING.OUT
Bài 3May mắnLUCKY.*LUCKY.INPLUCKY.OUT
Bài 4Tam giácTRIANGLE.*TRIANGLE.INPTRIANGLE.OUT
Bài 5Chở hàngGOOD.*GOOD.INPGOOD.OUT
Dấu * được thay thế bởi PAS, CPP, PY của ngôn ngữ lập trình được sử dụng tương ứng là Free Pascal, C++, Python hoặc phần mở rộng tương ứng với NNLT khác.

 

 

Bài 1: (4 điểm) Tương đồng                                                                                                     Tên chương trình: SAME.*

Vườn bưởi nhà Alice có n cây. Để theo dõi sự phát triển của các cây bưởi của mình, Alice thường xuyên đo và ghi lại chiều cao của chúng. Trong tuần này, Alice có được bảng chiều cao của các cây bưởi là một dãy số nguyên a[1], a[2],…, a[n], trong đó a[i] là chiều cao của cây bưởi thứ i. Nhìn vào dãy số, Alice biết có những cây có chiều cao trùng nhau và Alice gọi mỗi tần số trùng nhau là tần số “tương đồng”.

Do số lượng cây bưởi nhiều nên Alice muốn nhờ các bạn lập trình tìm tần số tương đồng lớn nhất của các cây bưởi là bao nhiêu?

Dữ liệu vào: Đọc từ file SAME. INP gồm 2 dòng:

  • Dòng 1: gồm một số nguyên dương n (0 < n <106).
  • Dòng 2: gồm n số nguyên dương a[i] (0 < ai <106), mỗi số ứng với chiều cao của một cây bưởi, giữa các số được cách nhau bởi một khoảng trắng.

Kết quả: Ghi ra file SAME.OUT gồm duy nhất một số nguyên dương là tần số tương đồng lớn nhất.

Ví dụ:

SAME.INPsame.out
7

9 8 6 8 5 6 10

2
2

3 10

1

 

Giải thích bộ test 1:

Có 1 chiều cao: 5;

Có 2 chiều cao: 6;

Có 2 chiều cao: 8;

Có 1 chiều cao: 9;

Có 1 chiều cao: 10

->Tần số tương đồng lớn nhất là: 2

Bài 2: (4 điểm) Tách xâu                                                          Tên chương trình: STRING.*

Hôm nay, mẹ và Cám đi dự dạ hội. Tấm cũng rất muốn được đi. Nhưng trước khi đi, mẹ Cám giao cho Tấm một công việc để làm khó Tấm như sau:

Cho một xâu s gồm các ký tự là các chữ cái in hoa hoặc in thường (trong bảng chữ cái Tiếng Anh) và các kí tự số. Mẹ kế yêu cầu Tấm hãy tách các ký tự trong xâu s thành hai phần như sau:

Phần 1: gồm các chữ cái có mặt trong s nhưng viết theo thứ tự ngược lại.

Phần 2: gồm các chữ số có mặt trong xâu s nhưng phải được sắp xếp theo thứ tự từ nhỏ đến lớn.

Nếu Tấm thực hiện xong công việc thì mới được đi dự tiệc. Nhưng Tấm có thời gian rất ít nên chưa giải được bài toán. Các bạn đội tuyển Tin học hãy giúp đỡ Tấm giải bài toán để Tấm còn được đi dự tiệc nhé!

Dữ liệu vào: Đọc từ file STRING.INP gồm 1 dòng chứa xâu s có độ dài không quá 103 ký tự. Dữ liệu vào đảm trong xâu s luôn có kí tự chữ cái và kí tự chữ số. Kết quả: Ghi ra fíle STRING.OUT gồm 2 dòng:

  • Dòng 1: gồm các chữ cái trong xâu s nhưng được viết theo thứ tự ngược lại.
  • Dòng 2: gồm các chữ số trong xâu s, nhưng phải được sắp xếp theo thứ tự từ nhỏ đến lớn.

Ví dụ:

STRING.INPSTRING.OUT
m2aC0ma2T3TamCam

0223

 

Bài 3: (4 điểm) May mắn                                                          Tên chương trình: LUCKY.*

Trong buổi tiệc liên hoan cuối năm của công ty cung cấp điện thoại Thế Giới Trẻ, ghế ngồi trong hội trường của khách mời được bố trí thành một ma trận hình chữ nhật gồm m hàng và n cột. Để buổi liên hoan thêm vui vẻ, ban tổ chức cho mỗi khách mời rút ngẫu nhiên một phiếu, trên phiếu có ghi một số nguyên dương trong phạm vi từ 1 đến 109.

Ban tổ chức sẽ trao cho những người may mắn mỗi người một phần quà là một chiếc điện thoại. Biết rằng người may mắn là người có số ghi trong phiếu của

mình lớn hơn trung bình cộng của số trong phiếu của những người ngồi xung quanh người đó.

Xung quanh một người được định nghĩa như sau:

Trường hợp 1: Người ngồi ở vị trí góc (trên trái, dưới trái, trên phải, dưới

phải) của hình chữ nhật thì chỉ có 2 người ngồi xung quanh.

Trường hợp 2: Người ngồi ở vị trí bìa (trừ góc) thì có 3 người xung quanh. Trường hợp 3: Người ngồi ở các vị trí còn lại có 4 người xung quanh.

 

Trường hợp 1                                   Trường hợp 2                                                          Trường hợp 3

Ô gạch sọc chỉ vị trí xung quanh của vị trí được tô đen.

Bạn hãy giúp ban tổ chức xác định số lượng điện thoại cần phải chuẩn bị để trao cho những người may mắn.

Dữ liệu vào: Đọc từ file LUCKY.INP gồm:

  • Dòng 1: gồm hai số nguyên dương theo thứ tự m, n (0 < m, n <103), giữa m và n được cách nhau bởi dấu cách.
  • m dòng tiếp theo, mỗi dòng gồm n số nguyên dương có giá trị không quá 109, giữa hai số cách nhau bởi một dấu cách.

Kết quả: Ghi ra file LUCKY.OUT gồm một số nguyên là số điện thoại ban tổ chức cần chuẩn bị.

Ví dụ:

LUCKY.INPLUCKY.OUT
3 43
1 4 3 1
1 1 5 2
2 1 2 1

 

Giải thích:

Số lượng điện thoại cần chuẩn bị là 3, vì có ba người may mắn:

+ Người thứ nhất ngồi ở hàng 1, cột 2, có số phiếu là 4 (có 3 người xung quanh) + Người thứ hai ngồi ở hàng 2, cột 3, có số phiếu là 5 (có 4 người xung quanh) + Người thứ ba ngồi ở hàng 3, cột 1, có số phiếu là 2 (có 2 người xung quanh)

Bài 4: (4 điểm) Tam giác                                                  Tên chương trình: TRIANGLE.*

Alice có n que tính, mỗi que có độ dài là một số nguyên dương. Alice muốn tạo ra các tam giác bằng cách ghép ba que tính lại với nhau, độ dài mỗi cạnh là một que tính.

Em hãy giúp Alice đếm xem có bao nhiêu tam giác được tạo thành từ các que tính này và cho biết diện tích lớn nhất trong các diện tích của các tam giác ghép được là bao nhiêu?

Biết rằng:

+ Hai tam giác được gọi là khác nhau nếu có ít nhất một que tính khác nhau.

+ Ta có thể tính diện tích tam giác theo công thức sau :

s=Vp * (p — à) * (p — b) * (p — c)

Trong đó a,b,c là độ dài 3 cạnh của tam giác, và p là nửa chu vi của tam giác.

Dữ liệu vào: Đọc từ file TRIANGLE.INP gồm:

  • Dòng 1: gồm một số nguyên dương n (3 < n < 100)
  • Dòng 2: gồm n số nguyên dương a[1], a[2], …, a[n] là độ dài của n que tính (1 < a[i] < 106 1<i<n). Giữa các số được cách nhau bởi một khoảng trắng.

Kết quả: Ghi ra file TRIANGLE.OUT gồm:

  • Dòng 1: Ghi số lượng tam giác có thể ghép được.
  • Dòng 2: Ghi một số thực là diện tích lớn nhất của tam giác, kết quả làm tròn đến 2 chữ số ở phần thập phân. Trường hợp không có tam giác nào thì dòng này ghi -1.
TRIANGLE.INPTRIANGLE.OUTGiải thích
53Có 3 tam giác được tạo từ 5 que tính trên:
1 4 5 2 36.00Tam giác 1: Que thứ 2, 3, 4 Tam giác 2: Que thứ 2, 3, 5 Tam giác 3: Que thứ 2, 4, 5 Trong đó tam giác thứ 2 có 3 độ dài là 4 5 3 có có diện tích lớn nhất là 6.00
44Có 4 tam giác được tạo từ 4 que tính trên:
2 2 2 21.73Tam giác 1: Que thứ 1, 2, 3

Tam giác 2: Que thứ 1, 2, 4

Tam giác 3: Que thứ 1, 3, 4

Tam giác 4: Que thứ 2, 3, 4

Trong đó 4 tam giác đều có cùng diện

tích là: 1.73

30Không ghép được tam giác nào
1 2 3-1

 

Bài 5: (4 điểm) Hàng hóa                                                            Tên chương trình: GOOD.*

Cửa hàng tạp hóa XYZ cần chở n kiện hàng giao cho khách. Kiện hàng thứ i có trọng lượng là a[i] tấn. Cửa hàng có một xe tải có trọng tải là m tấn. Trong

chuyến hàng đầu tiên, cửa hàng muốn chở những kiện hàng đi giao thỏa mãn các yêu cầu sau:

  • Yêu cầu 1: Ưu tiên kiện hàng có trọng lượng lớn hơn sẽ được chở đi.
  • Yêu cầu 2: Xe còn đủ trọng tải chở được thì chọn tiếp kiện hàng khác thỏa mãn yêu cầu 1.

Em hãy lập trình giúp cửa hàng xác định trọng lượng các kiện hàng của chuyến xe đầu tiên.

Dữ liệu vào: Đọc từ file GOOD.INP gồm hai dòng:

  • Dòng 1: gồm số nguyên dương n (1 <n<103) là số kiện hàng và số nguyên dương m (0 < m < 109) là trọng lượng của xe tải. Giữa n và m được cách nhau bởi dấu cách.
  • Dòng 2: gồm n số nguyên dương a[i] (0 < a[i] <109, a[i] < m, 1<i<n) thể hiện trọng lượng của kiện hàng thứ i. Giữa các số được cách nhau bởi dấu cách.

Kết quả: Ghi ra file GOOD.OUT các số nguyên dương là trọng lượng của các kiện hàng trong chuyến xe đầu tiên theo trọng lượng giảm dần.

GOOD.INPGOOD.OUT
5 10

7 5 1 3 8

8 1
5 12

2 8 2 4 1

8 4

 

Giải thích bộ test 1:

Có n = 5 kiện hàng và xe có trọng tải m = 10 tấn Các kiện hàng có trọng lượng lần lượt là: 7 5 1 3 8 Vậy các kiện hàng được chở đi trong chuyến đầu tiên có trọng lượng lần lượt là 8 và 1.

Vì kiện hàng có trọng lượng là 8 lớn hơn trọng lượng các kiện hàng còn lại và 8 < m=10 nên được ưu tiên chọn. Trọng tải xe còn có thể chứa được là 10 – 8 = 2, nên chọn tiếp kiện hàng có trọng lượng là 1.

………………………………………………….. HẾT…………………………………………………..

Thí sinh không được sử dụng tài liệu. Giám thị không giải thích gì thêm.

Họ và tên thí sinh: ……………………………………………………………………………….. Số báo danh:……………………………………………………………………..

 

KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH

TrUnG học Cơ Sở

Năm học 2023-2024
Môn thi: TIN HỌC

Thời gian làm bài: 150 phút, không kể thời gian phát đề
Ngày thi: 27/3/2024

 

 

 

 

 

 

 

 

 

 

TỔNG quan các bài thi

Thứ tựTên bàiFile chương trìnhFile dữ liệu vàoFile kết quả
1Tiền điệnELCOST.*ELCOST.INPELCOST.OUT
2Độ mạnh của xâuSTRONG.*STRONG.INPSTRONG.OUT
3Tổng dòng cộtSUM.*SUM.INPSUM.OUT
4Xâu lặpSUBSTR.*SUBSTR.INPSUBSTR.OUT
5Phần thưởngGIFT.*GIFT.INPGIFT.OUT

Dấu * được thay thế bởi PAS, CPP, PY của ngôn ngữ lập trình được sử dụng tương ứng là Free Pascal, C++, Python hoặc phần mở rộng tương ứng với NNLT khác.

 

 

 

Học sinh chỉ được chọn một trong các môi trường quy định ở trên lập trình để làm toàn bộ bài thi.

Bài 1: Tiền điện (4,0 điểm)                                             Tên chương trình: ELCOST.*

Giá bán lẻ điện sinh hoạt được tính theo 3 bậc gồm:

  • Bậc 1: 100 Kwh đầu tiên, có giá là 2500 đồng/Kwh
  • Bậc 2: Từ Kwh 101 đến 200, có giá là 3000 đồng/Kwh
  • Bậc 3: Từ Kwh 201 trở lên, có giá là 3500 đồng/Kwh

Yêu cầu: Tính tổng tiền điện phải trả của một khu phố gồm n hộ gia đình.

Dữ liệu vào: Đọc từ file văn bản ELCOST.INP gồm hai dòng:

  • Dòng 1: Chứa số nguyên dương n (1 < n < 104) là số lượng hộ gia đình.
  • Dòng 2: Chứa n số nguyên dương ai (1 < i < n, 1 < ai < 104), với mỗi ai là số Kwh sử dụng của hộ gia đình thứ i. Giữa hai số liên tiếp được cách nhau bởi một dấu cách.

Kết quả: Ghi ra file văn bản ELCOST.OUT một số nguyên dương là tổng tiền điện của n hộ gia đình.

Ví dụ:

ELCOST.INPELCOST.OUT
3

15 165 205

1050000

 

 

Giải thích:

Có 3 hộ gia đình sử dụng số Kwh lần lượt là: 15, 165 và 205

Số tiền hộ thứ nhất: 15*2500 = 37500

Số tiền hộ thứ hai: 100*2500 + 65*3000 = 445000

Số tiền hộ thứ ba: 100*2500 + 100*3000 + 5*3500 = 567500

Nên tổng số tiền là: 37500 + 445000 + 567500 = 1050000

Bài 2: Độ mạnh của xâu (4,0 điểm)                                Tên chương trình: STRONG.*

Cho xâu s chỉ gồm các kí tự in thường trong bảng chữ cái Tiếng Anh và kí tự số từ ‘0’ đến ‘9’.

Yêu cầu: Tìm độ mạnh của xâu. Biết rằng độ mạnh của xâu là tích của số kí tự phân biệt xuất hiện trong xâu với số lần xuất hiện nhiều nhất của một kí tự trong xâu.

Dữ liệu vào: Đọc từ file văn bản STRONG.INP gồm một dòng chứa xâu s có chiều dài không quá 103 kí tự. Trong xâu không chứa khoảng trắng và kí tự đặc biệt.

Kết quả: ghi ra file văn bản STRONG.OUT một số nguyên dương là độ mạnh của xâu.

Ví dụ:

STRONG.INPSTRONG.OUT
xy11z2yyzxy0y30
ggggg__________________5

 

 

Giải thích:

Ở test 1: Xâu s = ‘xy11z2yyzxy0y’. Số kí tự phân biệt trong xâu s là 6 (gồm ‘x’, ‘y’, ‘1’, ‘z’, ‘2’, ‘0’) và số lần xuất hiện nhiều nhất của một kí tự là 5 (kí tự ‘y’). Nên độ mạnh của xâu là 6 * 5 = 30.

Ở test 2: Xâu s = ‘ggggg’. Số kí tự phân biệt trong xâu s là 1 (kí tự ‘g’) và số lần xuất hiện nhiều nhất là 5. Nên độ mạnh của xâu là 1 * 5 = 5.

Bài 3: Tổng dòng cột (4,0 điểm)                                                                                          Tên chương trình: SUM.*

Cho ma trận a gồm m dòng và n cột. Ma trận b được tạo bằng cách: bij = (tổng dòng i trên ma trận a + tổng cột j trên ma trận a) – aij Yêu cầu: Tìm giá trị nhỏ nhất trong ma trận b.

Dữ liệu vào: Đọc từ file văn bản SUM.INP gồm nhiều dòng:

  • Dòng 1: Chứa hai số nguyên dương theo thứ tự là m, n (1 < m, n < 102). Giữa hai số cách nhau bởi một dấu cách.
  • m dòng tiếp theo, mỗi dòng chứa n số nguyên dương aij (0 < aij < 109). Giữa hai số liên tiếp được cách nhau bởi một dấu cách.

Kết quả: Ghi ra file văn bản SUM.OUT một số nguyên dương là giá trị nhỏ nhất tìm được trong ma trận b.

Ví dụ:

SUM.INPSUM.OUT
2 310
3 2 4
2 1 5

 

 

Giải thích: Ma trận b là 11 10 14 11 10 12

Nên giá trị nhỏ nhất trong ma trận b là 10.

 

Cách 1: Dùng mảng 2D để tính tổng cột (Không dùng thư viện ngoài)

  • Ý tưởng: Duyệt từng phần tử của ma trận và tính tổng cột trong quá trình đọc dữ liệu.
  • Độ phức tạp: O(m × n), đủ nhanh cho m, n ≤ 10⁶.

python

Sao chépChỉnh sửa

 

def tìm_tổng_nhỏ_nhất(tệp_vào):
    with open(tệp_vào, 'r') as file:
        m, n = map(int, file.readline().split())  # Đọc m (số hàng) và n (số cột)
        tổng_cột = [0] * n  # Mảng lưu tổng các cột
        for _ in range(m):
            dòng = list(map(int, file.readline().split()))
            for j in range(n):
                tổng_cột[j] += dòng[j]  # Cộng dồn vào cột tương ứng
    return min(tổng_cột)  # Trả về tổng cột nhỏ nhất
# Đọc từ tệp SUM.INP và ghi kết quả vào SUM.OUT
tệp_vào = "SUM.INP"
tệp_ra = "SUM.OUT"
kết_quả = tìm_tổng_nhỏ_nhất(tệp_vào)
with open(tệp_ra, "w") as file:
    file.write(str(kết_quả) + "\n")

 

Cách 2: Dùng NumPy để xử lý nhanh hơn (Dùng thư viện ngoài)

  • Ý tưởng: Dùng thư viện NumPy để tính tổng nhanh hơn.
  • Lợi ích: Tối ưu tốc độ tốt hơn với dữ liệu lớn.

python

Sao chépChỉnh sửa

 

import numpy as np  # Import thư viện NumPy
def tìm_tổng_nhỏ_nhất_numpy(tệp_vào):
    with open(tệp_vào, 'r') as file:
        m, n = map(int, file.readline().split())  # Đọc m, n
        dữ_liệu = np.loadtxt(file, dtype=int)  # Đọc ma trận vào mảng NumPy
    tổng_cột = dữ_liệu.sum(axis=0)  # Tính tổng từng cột
    return tổng_cột.min()  # Trả về tổng nhỏ nhất
# Chạy chương trình
kết_quả = tìm_tổng_nhỏ_nhất_numpy("SUM.INP")
with open("SUM.OUT", "w") as file:
    file.write(str(kết_quả) + "\n")

 

So sánh hai cách

CáchDễ hiểuHiệu suấtDùng thư viện ngoài
1. Dùng mảng 2D✅ Rất dễ hiểuTốt (O(m×n))❌ Không
2. Dùng NumPy⚠ Cần hiểu NumPyNhanh hơn✅ Có

➡ Nếu không muốn dùng thư viện ngoài, hãy dùng cách 1. Nếu muốn tối ưu hiệu suất, hãy dùng cách 2 với NumPy.

 

Bài 4: Xâu lặp (4,0 điểm)                                                Tên chương trình: SUBSTR.*

Xâu lặp là một xâu có đoạn đầu ngắn nhất của nó được lặp lại nhiều lần. Ví dụ ‘xyxyxyxy’ là một xâu lặp vì nó có đoạn đầu ngắn nhất là ‘xy’ được lặp lại nhiều lần. ‘xyxy’ cũng được lặp lại nhưng không được tính là đoạn đầu vì nó không ngắn nhất.

Yêu cầu: Cho n xâu. Hãy ghép đoạn đầu của mỗi xâu lặp theo thứ tự xuất hiện của xâu (nếu xâu đó là xâu lặp).

Dữ liệu vào: Đọc từ file văn bản SUBSTR.INP gồm nhiều dòng:

  • Dòng 1: Chứa số nguyên dương n (1 < n < 103) là số lượng xâu.
  • n dòng tiếp theo, mỗi dòng chứa một xâu có độ dài không quá 103 kí tự.

Lưu ý: Trong xâu chỉ chứa kí tự thường từ ‘a’ đến ‘z’ trong bảng chữ cái Tiếng Anh (không chứa khoảng trắng, kí tự số và các kí tự đặc biệt). Dữ liệu vào đảm bảo luôn có xâu lặp.

Kết quả: Ghi ra file văn bản SUBSTR.OUT là xâu ghép thu được.

Ví dụ:

SUBSTR.INPSUBSTR.OUT
4xyabach
xyxyxyxy
abcab
abacabac
hhh

 

 

Giải thích:

Trong 4 xâu, có 3 xâu lặp theo thứ tự là: ‘xyxyxyxy’, ‘abacabac’, ‘hhh’. Ba đoạn đầu tương ứng là ‘xy’, ‘abac’, ‘h’. Nên xâu ghép là: ‘xyabach’.

Bài 5: Phần thưởng (4,0 điểm)                                                                                          Tên chương trình: GIFT.*

An được mẹ cho một số phần thưởng. Có nhiều phần thưởng được xếp thành một hàng, mỗi phần thưởng có giá trị trong khoảng từ 1 đến 109. An muốn chọn những phần thưởng có giá trị tăng dần liên tiếp nhiều nhất.

Yêu cầu: Cho biết số lượng phần thưởng mà An chọn được như mong muốn.

Dữ liệu vào: Đọc từ file văn bản GIFT.INP gồm một dòng chứa các số nguyên dương là giá trị của các phần thưởng. Giữa hai số liên tiếp nhau cách nhau bởi một dấu cách.

Kết quả: Ghi ra file văn bản GIFT.OUT một số nguyên dương là số lượng phần thưởng An chọn được.

Ví dụ:

GIFT.INPGIFT.OUT
2 4 3 5 7 8 64
1 5 4 3 5 6 6 5 8 63

 

 

Giải thích:

Ở test 1: Độ dài phần thưởng liên tiếp tăng dần nhiều nhất là 4 (2 4 3 5 7 8 6)

Ở test 2: Độ dài phần thưởng liên tiếp tăng dần nhiều nhất là 3 (1 5 4 3 5 6 6 58 6) ……. -…………… ……………….. HET……… –

Thí sinh không được sử dụng tài liệu. Giám thị không giải thích gì thêm.

Họ và tên thí sinh: ………………………………………….  Số báo danh:……………………………………………………………

 

Nếu bạn thấy hay ! xin bạn 1 phút ! vui lòng đánh giá 5 sao cho trang website của chúng tôi ! để có động lực làm thêm nhiều bài hay nữa ! cảm ơn quý khách nhé !

Khóa học Python online từ cơ bản đến nâng cao

 

Khóa học Python online từ cơ bản đến nâng cao