Buổi 12: Thi thử lần 1

Bấm vào slide rồi dùng phím ← → để chuyển, phím F để xem toàn màn hình.

Mở toàn màn hình

1. Sổ tay kiến thức Giai đoạn 1

Nhập – xuất (câu thần chú)

n = int(input())                        # một số
a, b = map(int, input().split())        # nhiều số trên một dòng
a = list(map(int, input().split()))     # cả dãy trên một dòng
s = input()                             # một dòng chữ
print(x, y)                             # in cách nhau dấu cách
print(*a)                               # in cả dãy
print(f"{x:.2f}")                       # 2 chữ số thập phân

Rẽ nhánh và vòng lặp

if dieu_kien:            # so sánh: == != < > <= >=
    ...                  # kết hợp: and or not
elif dieu_kien_khac:
    ...
else:
    ...

for i in range(1, n + 1):     # i = 1, 2, ..., n
    ...
while dieu_kien:              # lặp khi chưa biết số lần
    ...                       # break: thoát; continue: bỏ qua lượt

Các mẫu thuật toán đã học

MẫuÝ tưởng chínhBuổi
Tích lũykhởi tạo → cập nhật trong vòng lặp → in sau vòng lặp5
Bóc chữ sốn % 10 lấy chữ số cuối, n //= 10 bỏ chữ số cuối7
Đảo số / đổi cơ sốr = r * 10 + d; nhị phân thì thay 10 bằng 27
Kiểm tra nguyên tố, đếm ướcchỉ xét i * i <= n8
UCLNwhile b: a, b = b, a % b8
Mảng đếmcnt[x] += 1 khi giá trị nhỏ9
Tìm maxkhởi tạo bằng a[0], gặp số lớn hơn thì thay10
Biến cờgiả sử đúng, tìm phản ví dụ10
Đoạn liên tiếptiếp tục hoặc bắt đầu lại10
Xây dựng xâukq = "", duyệt và nối ký tự cần giữ11

Ước lượng thời gian chạy

Python làm được khoảng 10⁶ – 10⁷ phép tính mỗi giây. Luôn đọc giới hạn n trước khi chọn cách giải:

n tối đaCách làm chạy kịp
≤ 1000duyệt mọi cặp (hai vòng lặp lồng nhau)
≤ 10⁵ – 10⁶duyệt một lần
≤ 10¹²chỉ xét đến √n
≤ 10¹⁸công thức toán

2. Rút kinh nghiệm sau bài thi thử

Đánh dấu ✓ vào những lỗi em đã mắc để không lặp lại:

LỗiĐã mắc?
In thừa câu chữ (input("Nhap n: "), "Ket qua:")
Sai tên file bài làm
Quên trường hợp đặc biệt (n = 0, số 1, số âm, dãy toàn số âm)
Chỉ chạy thử ví dụ trong đề, không tự tạo test
Chương trình chạy quá thời gian
Lỗi chỉ số list (bắt đầu từ 0, kết thúc ở n − 1)

3. Bài tập về nhà

Bài 1 ★ – Làm lại đề thi thử

Làm lại những bài chưa đạt 10/10 trong đề thi thử số 1 (TONGCS, MATKHAU, DEMNT, NANG). Tự chấm lại bằng công cụ chấm cho đến khi đạt điểm tối đa:

python cham_bai.py TONGCS.py de_thi_thu/De01/TONGCS/tests

Bài 2 ★★ – DEMCP

Input: dòng 1 là n (1 ≤ n ≤ 10⁵); dòng 2 là n số nguyên (0 ≤ aᵢ ≤ 10¹²).

Output: số lượng số chính phương trong dãy (số 0 = 0² cũng là số chính phương).

InputOutput
6
1 2 4 10 16 0
4
Gợi ý: import math, rồi math.isqrt(x) cho phần nguyên của √x. x là số chính phương khi math.isqrt(x) ** 2 == x.

Bài 3 ★★★ (thử thách) – MATKHAU2

Mật khẩu siêu mạnh nếu thỏa mãn tất cả:

  • có ít nhất 8 ký tự; có chữ hoa; có chữ thường; có chữ số;
  • có ít nhất một ký tự đặc biệt (không phải chữ cái, không phải chữ số), ví dụ @ # ! $;
  • không có hai ký tự giống nhau đứng liền nhau.

Input: xâu s (1 ≤ độ dài ≤ 100), không chứa dấu cách. Output: YES hoặc NO.

InputOutput
Tin@Hoc2027YES
TinHocTre2027NO
Aa1!!bcdNO
Cách nộp bài: mỗi bài một file .py đặt tên theo tên bài. Chạy thử với tất cả ví dụ trước khi nộp!

Chưa mở đáp án

Đáp án sẽ được mở sau khi các em nộp bài tập về nhà.

Chưa mở đáp án

Đáp án sẽ được mở sau khi các em nộp bài tập về nhà.

Zalo