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ình1. 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ính | Buổi |
|---|---|---|
| Tích lũy | khởi tạo → cập nhật trong vòng lặp → in sau vòng lặp | 5 |
| Bóc chữ số | n % 10 lấy chữ số cuối, n //= 10 bỏ chữ số cuối | 7 |
| Đảo số / đổi cơ số | r = r * 10 + d; nhị phân thì thay 10 bằng 2 | 7 |
| Kiểm tra nguyên tố, đếm ước | chỉ xét i * i <= n | 8 |
| UCLN | while b: a, b = b, a % b | 8 |
| Mảng đếm | cnt[x] += 1 khi giá trị nhỏ | 9 |
| Tìm max | khởi tạo bằng a[0], gặp số lớn hơn thì thay | 10 |
| Biến cờ | giả sử đúng, tìm phản ví dụ | 10 |
| Đoạn liên tiếp | tiếp tục hoặc bắt đầu lại | 10 |
| Xây dựng xâu | kq = "", 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 đa | Cách làm chạy kịp |
|---|---|
| ≤ 1000 | duyệ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).
| Input | Output |
|---|---|
61 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.
| Input | Output |
|---|---|
Tin@Hoc2027 | YES |
TinHocTre2027 | NO |
Aa1!!bcd | NO |
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à.