Thông tin
Sau đây là lời giải của Kỳ thi Tuyển sinh 10 trường THPT chuyên Lê Quý Đôn tỉnh Bà Rịa - Vũng Tàu năm học 2021 - 2022.
Bạn đọc có thể nộp và chấm bài (test tự sinh) TẠI ĐÂY.
Chuẩn bị bởi team Logica, thuộc khuôn khổ dự án The Algitect (ALGI Project)
Cho số nguyên dương . Yêu cầu tính:
Dữ liệu đảm bảo: .
Cho biến chạy vòng lặp từ đến , cộng vào kết quả.
Độ phức tạp thời gian: .
Nhận xét:
Với mỗi số hạng từ đến , duy trì một biến là giá trị của số hạng đang xét, nếu lẻ, cộng vào đáp án, ngược lại trừ đáp án đi .
Độ phức tạp thời gian: .
Độ phức tạp thời gian của cả bài toán là tổng độ phức tạp thời gian của từng yêu cầu.
Cho số nguyên dương và , thực hiện các yêu cầu:
Dữ liệu đảm bảo: và .
Dùng cấu trúc dữ liệu vector, lần lượt tách và đưa từng chữ số sau cùng của (tức là ) vào vector (ngoại trừ các chữ số ). Sau đó, loại bỏ chữ số đó đi bằng cách chia cho .
Nhận xét
Đáp an của bài toán là .
Để tính một cách nhanh chóng, dùng lũy thừa nhị phân kết hợp với modulo trong lúc tính.
Độ phức tạp thời gian:
Độ phức tạp thời gian của cả bài toán là tổng độ phức tạp thời gian của từng yêu cầu.
Cho hai số nguyên dương , và dãy số nguyên nguyên dương . Thực hiện các yêu cầu:
Dữ liệu đảm bảo: và .
Nhận xét
Mà nguyên, do đó chia hết cho , hay .
Như vậy, ta duyệt qua dãy và in ra các số thỏa mãn điều kiện trên.
Độ phức tạp thời gian: .
Vì , có thể dùng kĩ thuật sàng nguyên tố, sau đó với mỗi số kiểm tra nhanh xem nó có phải số nguyên tố hay không và đếm.
Độ phức tạp thời gian: .
Kiểm tra số chính phương
Số chính phương là bình phương của một số nguyên.
Ta có thể kiểm tra một số có phải số chính phương hay không bằng cách lấy bình phương phần nguyên của so sánh với .
Nghĩa là, chính phương khi và chỉ khi:
Để khoảng cách giữa hai số chính phương được chọn là xa nhất, ta chọn số chính phương đầu tiên và cuối cùng của dãy.
Độ phức tạp thời gian: .
Nhận xét:
Chênh lệch giữa hai phần là lớn nhất khi một phần đạt tổng lớn nhất có thể và phần còn lại phải nhỏ nhất có thể.
Dễ dàng nhận thấy:
Có thể tìm nhanh tập các phần tử lớn nhất hoặc nhỏ nhát bằng cách sắp xếp lại dãy số.
Độ phức tạp thời gian:
Độ phức tạp thời gian của cả bài toán là tổng độ phức tạp thời gian của từng yêu cầu.
Cho số nguyên và dãy số nguyên .
Yêu cầu: Chia dãy thành hai phần sao cho tổng của mỗi phần đều là số nguyên tố và chênh lệch giữa hai phần là nhỏ nhất. In ra nếu không có cách chia.
Dữ liệu đảm bảo: và .
Áp dụng quy hoạch động cái túi.
Định nghĩa: là khả năng tạo ra tổng bằng từ các phần tử trong dãy:
Khởi gán: (không sử dụng phần tử nào).
Công thức: Xét mọi phần tử và mọi tổng bất kỳ. Nếu và thì .
Lưu ý
Ta tính dựa vào và nên cần duyệt giảm dần, để khi lấy ta đảm bảo đó là đáp án chưa được cập nhật bởi .
Nhận xét
Gọi tổng của cả dãy số là .
Chênh lệch giữa hai phần là nhỏ nhất khi tổng của hai phần gần với nhất.
Trong hai phần, sẽ luôn có một phần với tổng và phần còn lại là lớn hơn hoặc bằng .
Không mất tính tổng quát, ta chỉ cần tính . Đáp án tối ưu khi D lớn nhất.
Đáp án hợp lệ khi và là số nguyên tố, ta có thể kiểm tra điều này bằng kĩ thuật sàng nguyên tố.
Độ phức tạp thời gian:
: Quy hoạch động.
: Sàng nguyên tố.