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 2019 - 2020.
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 một số nguyên dương .
Yêu cầu: Tính giá trị các biểu thức:
Dữ liệu đảm bảo: .
Lưu ý: Lưu đáp án bằng kiểu số thực.
Độ 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 một số nguyên dương .
Yêu cầu:
Dữ liệu đảm bảo: .
Nhận xét
Những số với bằng nhau có cùng chữ số tận cùng.
Chứng minh
Xuất phát từ .
Ta lại quay về giá trị ở ban đầu, dẫn đến sau đó chu kỳ gồm này sẽ lặp đi lặp lại.
Như vậy, với những số mà bằng nhau thì chữ số tận cùng của tương ứng cũng bằng nhau.
Cụ thể, ta có các trường hợp:
Độ phức tạp thời gian: .
Ta không thể tính trực tiếp biểu thức rồi sau đó mới vì sẽ tràn dữ liệu.
Tính chất chia dư
Ta thừa nhận tính chất sau đây với :
Thay vào biểu thức với ta được
Chú ý kết hợp modulo khi nhân để tránh tràn 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.
Nhập vào một dãy số nguyên dương gồm phần tử
Yêu cầu:
Dữ liệu đảm bảo: và .
Duyệt qua từng giá trị trong dãy, lấy chữ số tận cùng của giá trị bằng cách chia dư cho . Nếu chữ số cuối cùng là hoặc thì in ra số đó.
Độ phức tạp thời gian: .
Một số nguyên dương có dạng khi .
Do đó, ta duyệt qua mọi phần tử và in ra các phần tử thỏa mãn điều kiện trên.
Độ 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:
Duyệt qua các phần tử trong mảng và thực hiện như trên. Có thể tính nhanh bằng hàm có sẵn trong thư viện của C++ là sqrt()
.
Độ phức tạp thời gian: .
Độ phức tạp của hàm
sqrt()
trong C+ STL là .
Áp dụng quy hoạch động cơ bản.
Độ 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 một dãy số nguyên gồm phần tử .
Yêu cầu: Cho biết số lượng các đoạn con có tổng giá trị các phần tử trong đoạn bằng .
Dữ liệu đảm bảo: và .
Nhận xét
Một đoạn có tổng bằng , tức là:
Giả sử ta có mảng cộng dồn , biểu thức này tương đương:
Nếu ta cố định từng vị trí trên mảng, bài toán trở thành đếm số lượng số thỏa mãn:
Sử dụng cấu trúc dữ liệu map
để thực hiẹn việc này.
Độ phức tạp thời gian: .